2022-09-30 11:57
@杜福忠 牛b,用json自定义输出ui非常灵活
前端同样是layui,这里贴一下我们项目目前的玩法
### #set(modelTag = "xxx")### 默认由拦截器自动处理|页面全局参数|modelTag(数据库类名,小写;跟json请求提交有关)|
#set(pageTag = UUID19.uuid())### 默认由拦截器自动处理|页面全局参数|pageTag(页面标记,为空时自动用modelTag的值;跟页面dom命名有关,务必避免跟其它页面重复;)|
#include("/commons/template/layui_admin_listview.html"
, pageTitle="考勤详情查询"
, tableCols="[[
{field: 'studentCode', width: 145, title: '学工号'}
,{field: 'name', width: 120, title: '姓名', templet: '#LAY-listview-tpl-stuView-#(pageTag)'}
,{field: 'sexName', width: 58, title: '性别'}
,{field: 'studentTypeName', width: 86, title: '学生类型'}
,{field: 'orgPath', width: 200, title: '管理单位路径', style: 'direction:rtl;'}
,{field: 'dormPath', width: 250, title: '楼栋宿舍路径', style: 'direction:rtl;'}
,{field: 'stuAttendanceStatusName', title: '考勤状态'}
,{field: 'statisticsDateStr', title: '考勤日期'}
,{field: 'entryTimeStr', title: '最近进出时间'}
,{field: 'entryModeName', title: '进出方式'}
]]"
, listUrl="list"
, pageTagTransmit=true
, withFileForm=true
)
#define beforeMain()### 位置在页面主要内容前(可定义js/css等等)
###---------------------------------------------------------------------------------beforeMain--start↓
###---------------------------------------------------------------------------------beforeMain--end--↑
#end
#define searchBox()### 搜索栏表单内容
###---------------------------------------------------------------------------------searchBox--start↓
#@laySearchBoxItemStart("姓名" ,"layui-input-inline")
#@laySearchBoxItemEnd()
#@laySearchBoxItemStart("学工号" ,"layui-input-inline")
#@laySearchBoxItemEnd()
#@laySearchBoxItemStartWS("楼栋" ,"layui-input-inline", "width:28px;", "width:400px;")
输入可搜索 #for(house : DataHelper.getRoleHouses(request)) #(house.name) #end
#@laySearchBoxItemEnd()
#@laySearchBoxItemStartWS("管理单位" ,"layui-input-inline" ,"width:28px;" ,"width:420px;")
输入可搜索 #for(shuyuan : DataHelper.getRoleShuyuans(request)) #(shuyuan.name) #end
#@laySearchBoxItemEnd()
2022-07-12 14:35
BaseController重写getRender()
@Override
@NotAction
public Render getRender() {
Render render = super.getRender();
if (render instanceof com.jfinal.render.JsonRender) {
} else if (isRenderJson()) {
return RenderManager.me().getRenderFactory().getJsonRender(getAdminResult());
}
return render;
}
isRenderJson()判断可以是客户端带上指定的参数,或者ajax的dataType之类的
2022-06-21 10:54
@JFinal 詹总,刚好想到之前项目有个情况,因为TL多数时候用法是try{serTL();拦截器invoke();}finally{removerTL();}有一次就是前端render的时候用到TL的东西,但是拦截器invoke()的后面其实是发生在response写之前的,这时候TL清空,render已经拿不到想要的东西,当然这个场景可以用别的处理方法,小问题。那么詹总有没有考虑过after拦截器,或者现有的拦截器加个afterResponse()回调呢,应该还是有应用场景的。
2022-06-20 23:15
@JFinal 使用场景主要就是线程内的“全局变量”。我是放在一个工具类使用的,private static final FastThreadLocal> threadMap = new FastThreadLocal>();然后有还有setThreadMap(String key, Object value);removeThreadMap();removeThreadMap(String key);get方法;