首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
jfinal中#if()里面的表达式判断是否包含该怎么写?
圣威
2018-04-13 11:23
就是#if() #end里面条件是包含关系,并不是相等关系应该怎么写?
项目:
JFinal
评论区
JFinal
2018-04-13 11:26
什么包含? 是 list 还是 map ,还是 String?
enjoy 引擎与 java 表达式是打通的,这样用就可以:
#if( "abcdef".contains("abc"))
#if(mapAAA.contains(mapBBB))
#if(listAAA.contains(listBBB))
多看下手册,这部分内容也就一个章节
回复
圣威
2018-04-13 11:29
string,我是在后端通过逻辑拼凑直接生成一个前端编辑页面,如上参数是通过后端传输的
回复
JFinal
2018-04-13 11:32
@圣威
心中记着:enjoy 表达式是与 java 表达式直接打通的,然后就可以 just do it了
回复
圣威
2018-04-13 11:32
sb.append("#if(attr." + attrdefinition.getName() + ".contains \"(" + value.getName()+ ")\") checked #end"),这样写好像不识别
回复
JFinal
2018-04-13 11:33
@圣威
你这到底是 Java 代码还是模板代码?
sb.append(...) 这个看着是 java , #if(attr ... 这个看着是模板,这是要做什么?
回复
圣威
2018-04-13 11:36
就是在数据库把表单的模板配好,在Java里面根据规则自动生成表单的展示编辑页面(html),会通过jfinal的template模板模式展示数据
回复
圣威
2018-04-13 11:38
通过controller层的render到这个html页面
回复
JFinal
2018-04-13 11:40
@圣威
无论模板数据在哪里,模板就是模板,而不能是 sb.append(...) 这种代码,除非你是在用 Java 代码动态生成模板代码,才会有 sb.append(...) 存在
将拼接好的模板输出来,看看语法对不对,然后就知道如何改进了
此外,模板的核心目标之一就是避免 String 拼接的,所以直接利用模板的功能去写内容,尽可能不要使用 sb.append(...) 这种东东
#if(attr.attrdefinition.getName().contains(value.getName()))
checked
#end
回复
圣威
2018-04-13 11:42
把.contains换成==,去掉后面参数的括号是完美支持的,但是这个编辑框是checkbox的,支持多选,所以就看文档也没看到这种例子
回复
圣威
2018-04-13 11:44
就是一种动态生成的
回复
圣威
2018-04-13 11:51
大概懂了,谢谢
回复
杜福忠
2018-04-13 12:48
兄弟~ 魔版渲染模版的魔版 了解一下~
new Engine().getTemplateByString(stringTemplate).renderToString(Kv.by("a", 2))
回复
杜福忠
2018-04-13 12:56
new Engine()
.getTemplateByString(
"#('#')if(attr.#(name).contains(\"#(name)\") checked #('#')end"
)
.renderToString(Kv.by("name", attrdefinition.getName()))
根据你刚拼接的字符串>> 这样也可以拼接
回复
发送
我要反馈
热门反馈
扫码入社
enjoy 引擎与 java 表达式是打通的,这样用就可以:
#if( "abcdef".contains("abc"))
#if(mapAAA.contains(mapBBB))
#if(listAAA.contains(listBBB))
多看下手册,这部分内容也就一个章节