jeecg扩展封装tag的那些事
版权声明:本文为楼主原创文章,未经楼主允许不得转载,如要转载请注明来源。
目前公司开发一直使用的是jeecg框架,简单好用,但有时候不如自己写的随心所欲。最近项目遇到一个需求, 想封装配置加解密,本来最开始的想法是通过entity的get,set方法,get时进行解密,set时进行加密。但是同事测试发现jeecg的datagrid展示时,会调用多次get方法,那么问题就来了,此方法就行不通了。
然后也有时间,我就查看了框架的源码,追踪到底发现它确实调用了多次,因为它在封装的时候,获取数据值需要调用,有查询条件它同样需要调用……既然此路不通,那么就换路吧。既然想配置,那就扩展标签。然后就开始挖源代码,源码面前,了无密码。最后发现其实并不是那么神秘。下面就扩展封装jeecg标签做个简单说明。
第一步:为你想扩展的标签起好名字
在easyui.tld里添加如下代码
<attribute>
<name>起个有意义的名字吧</name>//标签名称
<required>true</required>//是否必须
<rtexprvalue>true</rtexprvalue>//表示是否可以使用JSP表达式
<description>一看我就是好人</description>//描述
</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,我就进行页面值解密处理。
//数据加密
if(column.isSecret()){
sb.append(",formatter:function(value,rec,index){"); sb.append("$.ajax({type: \"post\",url: \"url\", data: {\"value\":value}, dataType:\"json\",async : false,success: function(msg){value=msg.msg;} });return value;}"); }
记得在DataGridColumnTag.java里doEndTag()方法里同样加上你定义的字段。ok,这样自定义标签已经封装完成,在页面里去使用吧。
<t:dgCol title="" field="" secret="true"></t:dgCol>
jeecg扩展封装tag的那些事的更多相关文章
- jeecg 扩展封装查询条件 时间段查询
使用jeecg框架开发的小伙伴们知道,添加查询条件,通常是我们加一个配置(query="true")就可以将该字段设置为查询条件.简单方便.但是这样的配置查询条件仅适用于输入框输入 ...
- 对bootstrap modal的简单扩展封装
对bootstrap modal的简单扩展封装 参考自:http://www.muzilei.com/archives/677 注:原文不支持bootstrap新版本,并且居中等存在问题 此段时间 ...
- 学习笔记: Expression表达式目录树详解和扩展封装
1. 表达式链接扩展封装,ORM常用 And Or /// <summary> /// 表达式访问者 /// </summary> public class Expressi ...
- 基于log4net的日志组件扩展封装,实现自动记录交互日志 XYH.Log4Net.Extend(微服务监控)
背景: 随着公司的项目不断的完善,功能越来越复杂,服务也越来越多(微服务),公司迫切需要对整个系统的每一个程序的运行情况进行监控,并且能够实现对自动记录不同服务间的程序调用的交互日志,以及通一个服务或 ...
- .NetCore 扩展封装 Expression<Func<T, bool>> 查询条件遇到的问题
前面的文章封装了查询条件 自己去组装条件,但是对 And Or 这种组合支持很差,但是也不是不能支持,只是要写更多的代码看起来很臃肿 根据 Where(Expression<Func< ...
- 【EXCEL终极总结分享】基于NPOI扩展封装的简易操作工具类库(简单灵活易用,支持导出、导入、上传等常见操作)
对于EXCEL的导入.导出,我之前已分享过多次,比如: 第一种方案:<我写的一个ExcelHelper通用类,可用于读取或生成数据>这个主要是利用把EXCEL当成一个DB来进行获取数据,导 ...
- 学渣乱搞系列之扩展KMP的那点事
扩展KMP牵涉了一些相对运动的姿势,比较费解!本学渣看了一天的扩展KMP,打算写点东西...本文看后,出现的后果本人一概不负责.毕竟我不是很会表达. 扩展KMP是搞什么灰机的?本学渣所知道的扩展KMP ...
- AndroidStudio封装SDK的那些事
来自自己简书博客:原文地址:https://www.jianshu.com/p/4d092c915ef1 首先SDK是提供给别人调用的工具.所以常见的SDK都是以jar包,so库,aar包等方式导入A ...
- 【转】Python基础-封装与扩展、静态方法和类方法
[转]Python基础-封装与扩展.静态方法和类方法 一.封装与扩展 封装在于明确区分内外,使得类实现者可以修改封装内的东西而不影响外部调用者的代码:而外部使用者只知道一个接口(函数),只要接口(函数 ...
随机推荐
- WCF服务开发与调用的完整示例
WCF服务开发与调用的完整示例 开发工具:VS2008 开发语言:C# 开发内容:简单的权限管理系统 第一步.建立WCF服务库 点击确定,将建立一个WCF 服务库示例程序,自动生成一个包括IServi ...
- androidTV第一次创建(转:支持原创)
转载地址:http://blog.csdn.net/aa2967277/article/details/50617677 AndroidTV应用开发简介 目前,网上还没有对AndroidTV的足够的介 ...
- React Native的组件ListView
React Native的组件ListView类似于iOS中的UITableView和UICollectionView,也就是说React Native的组件ListView既可以实现UITableV ...
- 使用OpenXML操作Office文档
使用OpenXML类库, 以编程的方式来访问PowerPoint, Word, Excel等文档, 有时能够为我们批量编辑文档提供方便. 最近项目中遇到的两个任务是: 1. 替换文档中的图片的Alt ...
- USB协议-USB的描述符及其之间的关系
USB只是一个总线,只提供一个数据通路而已.USB总线驱动程序并不知道一个设备具体如何操作,有哪些行为.具体的一个设备实现什么功能,要由设备自己来决定.那么,USB主机是如何知道一个设备的功能以及行为 ...
- linux下安装memcache(php版本5.3)
1.安装之前需要的准备:所需软件 libevent-1.4.6这个版本网上没找到,所以安装最新的版本libevent-2.0.22 libevent-1.4.6-stable.tar.gz (http ...
- “__doPostBack”未定义
项目中发现IE10等高级浏览器报错 ASP.NET无法检测IE10,导致_doPostBack未定义JavaScript错误 为此微软工程师解释如果发布asp2.0 asp4.0发布时,这些浏览器还未 ...
- python数据结构与算法——桶排序
桶排序的时间复杂度是O(M+N),通过建立对原始数据的有序统计表,实现非常快速的排序过程 可以用hashtable(或者dict)实现,查询复杂度为O(1) 贴代码: # 简单桶排序 从小到大 def ...
- ajax data数据里面传一个json到后台的写法
$.ajax({ url:url+"/crm/contact", type:'PUT', ...
- IOS学习笔记34—EGOTableViewPullRefresh实现下拉刷新
移动应用开发中有这么一种场景,就是在列表中显示的数据刷新,有点击刷新按钮刷新的,也有现在最流行的由Twitter首先推出的下拉刷新功能,在IOS中,使用下拉刷新更新UITableView中的数据也用的 ...