jeecg擴展封裝tag的那些事


  

版權聲明:本文為樓主原創文章,未經樓主允許不得轉載,如要轉載請注明來源。

  目前公司開發一直使用的是jeecg框架,簡單好用,但有時候不如自己寫的隨心所欲。最近項目遇到一個需求, 想封裝配置加解密,本來最開始的想法是通過entity的get,set方法,get時進行解密,set時進行加密。但是同事測試發現jeecg的datagrid展示時,會調用多次get方法,那么問題就來了,此方法就行不通了。

  然后也有時間,我就查看了框架的源碼,追蹤到底發現它確實調用了多次,因為它在封裝的時候,獲取數據值需要調用,有查詢條件它同樣需要調用……既然此路不通,那么就換路吧。既然想配置,那就擴展標簽。然后就開始挖源代碼,源碼面前,了無密碼。最后發現其實並不是那么神秘。下面就擴展封裝jeecg標簽做個簡單說明。

  第一步:為你想擴展的標簽起好名字

  在easyui.tld里添加如下代碼

1 <attribute>
2             <name>起個有意義的名字吧</name>//標簽名稱
3             <required>true</required>//是否必須
4             <rtexprvalue>true</rtexprvalue>//表示是否可以使用JSP表達式
5             <description>一看我就是好人</description>//描述
6         </attribute>

注意:如果你想在<t:datagrid>里使用該標簽,那理所當然要將它放在<tag><name>datagrid</name><tag>這個tag里嘍。
  第二步:定義了,就要去為它聲明

分別在DataGridColumnTag.java和DataGridColumn.java添加上定義,怎么定義?(protected boolean name;簡單吧)然后生成get,set方法

  第三步:開始使用,處理業務邏輯

在DataGridTag.java找到setColumn()方法,然后加上你添加的字段。在getField()方法里處理你的邏輯,比如,我定義了一個secret標簽,然后如果secret為true,我就進行頁面值解密處理。

1 //數據加密
2             if(column.isSecret()){
3                 sb.append(",formatter:function(value,rec,index){");
4 
5                 sb.append("$.ajax({type: \"post\",url: \"url\", data: {\"value\":value}, dataType:\"json\",async : false,success: function(msg){value=msg.msg;}  });return value;}");
6                 
7             }

記得在DataGridColumnTag.java里doEndTag()方法里同樣加上你定義的字段。ok,這樣自定義標簽已經封裝完成,在頁面里去使用吧。

<t:dgCol title="" field="" secret="true"></t:dgCol>


 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM