Jeecg踩坑不完全指南

公司用了这个叫做jeecg的快速开发框架,我不知道有多少公司在用这个框架,园子里有的可以吱一声。个人觉得这框架唯一优势就是可以让不会ssh的人也能进行开发,只要你会J2SE,有web后台发开经验即可。

框架的优劣这里不做说明,但是官方文档真的写的很粗糙,很多时候需要自己额外添加一些功能的时候会有一点无处下手的感觉。接触了一段时间后,也踩了不少的坑,现在记录一下,以飨读者。

jeecg版本:3.7.1

Tips 前端

权限管理设置中,按钮权限需要对相应的按钮设置OperateCode字段,然后在后台菜单管理-页面权限控制中配置相应的规则,接着去角色管理中分配权限,注意checkbox选中状态下为显示该按钮(此处与文档中描述的相反!)。

dgToolBar中对应的funname中的方法(例如add、update),都在curdtools_zh-cn.js文件中,写新的方法时可以去那里面复制。

针对于<t:datagrid>中的显示,<t:dgCol/>中如果有表示状态的字段,数据库可能存int,而显示需要中文,可以使用dictionary属性,如果对应的中文直接添加在系统后台的数据字典中(系统管理-数据字典),则直接dictionary=[字典名称];如果数据库中存在代码表,则dictionary=[表名,编码,显示文本]

针对于表单中的显示,状态选择可以使用下拉控件<t:dictSelect>,其中typeGroupCode属性填写数据字典名称。

文件上传推荐使用<t:webUploader>控件,具体代码见Snippets。t:webUploader是h5的,兼容性较好。

在<t:formvalid>表单中,需要手动提交表单,需要一个id为btn_sub的按钮。

表单页面中,设置input设置disabled="disabled" 后,该元素的内容不会提交表单,如果需要提交,但不可编辑,请使用readonly="readonly"

使用<t:dgOpenOpt>时注意,默认的openMode为OpenWin,需要为其设置width和height,否则报错;OpenTab时则不需要设置。

jeecg所有封装的控件的urlfont属性为图标设置,可以更换Font Awesome中的所有图标。

后台

SpringMVC路由默认采用param形式,即xxController.do?getList曾经一度想改成xx/getList,尝试多次后失败,事实证明代码关联太强,不推荐修改。

数据表设计中如果包含添加人,添加时间的可以直接使用jeecg指定字段(create_time,create_by,create_name,update_time,update_by,update_name等),jeecg自带aop绑定,更新时会 自动赋值。具体查看DataBaseConstant.java和HiberAspect.java

GUI代码生成器中,若pk为uuid,主键生成策略选择uuid,若为自增的id,则选择identity。

GUI代码生成器中,form风格个人推荐选择div风格,使用表格时,Validform会有坑。

GUI代码生成器中,推荐使用一对一关系来建表,需要一对多等别的关系时,可以添加注解来实现(@OneToMany,@ManyToOne)

路由的全局拦截器文件为AuthInterceptor.java和SignInterceptor.java,在里面添加系统的拦截规则。

后台可以配置过滤器来解决全局跨域问题。代码见Snippets。

清理jeecg自带版本号和logo信息,注意他的国际化内容,文字信息均存在数据表t_s_muti_lang中,无法直接在源代码中搜索到。

定时任务有bug,暂未解决,存在实例化多次的情况。

事务处理,添加注解@Transactional(rollbackFor=Exception.class)

Snippets

1.跨域过滤器

public class CorsFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletResponse response = (HttpServletResponse) servletResponse; response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); response.setHeader("Access-Control-Max-Age", "3600"); response.addHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Appkey"); filterChain.doFilter(servletRequest, servletResponse); } @Override public void destroy() { } }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsxfwp.html