• 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>


     

  • 相关阅读:
    桂电在线-转变成bootstrap版
    PHP开发APP接口---返回数据的封装类
    angularjs入门整理
    桂电在线_微信公众平台开发之-运用angularjs显示学校公告新闻列表和详情页面
    AngularJS学习-初识
    Nonsense Alphabet
    Even and Odd Functions
    研究生应该怎么学习?
    王菲观点
    Paul and Joyce are going to a movie(More listening of Unit 2)
  • 原文地址:https://www.cnblogs.com/xu-lei/p/5849790.html
Copyright © 2020-2023  润新知