freemarker中巧妙处理Object类型的js参数
最近工作中写freemarker的时候碰到一种情况如下:
$("#obj").jqplot({ <#if arg0??>arg0: ${arg0?html}, <#/if> <#if arg1??>arg1: ${arg1?html}, <#/if> <#if arg2??>arg2: ${arg1?html}, <#/if> arg3: "arg3" });
jqplot方法的入参是一个Object类型的js对象,因为需要判断入参是否放在了freemarker的参数列表里,所以使用了if语句,同时为了保证当所有参数都不存在时入参还是能够被正确解析的js对象,这里取巧添加了一个并没有实际意义的arg3: "arg3"。
这种用法颇有点写java的sqlMap的意思。
select * from tableName where 1=1 <#if arg0??>and arg0=${arg0}</#if>
虽然问题解决了,但总是觉得不是那么的优雅。
mybatis书写动态sql时可以用的种种强大表达式,遗憾的是目前我还没在freemarker中找到相对应的方法。
幸好js还算是很灵活的语言,可以使用另外一种灵活且优雅的方法来处理这种js动态参数的问题。
var configJson = {}; <#if arg0??>configJson.arg0 = ${arg0?html};<#/if> <#if arg1??>configJson.arg1 = ${arg1?html}; <#/if> <#if arg2??>configJson.arg2 = ${arg1?html}; <#/if> $("#obj").jqplot( configJson );
通过新建一个空的js对象,使用“对象.属性”的方法设置js的属性。顿时觉得高端大气上档次了,有没有?
相关推荐
88274956 2020-11-03
Zhongmeishijue 2020-09-10
runner 2020-09-01
梦的天空 2020-08-25
IdeaElements 2020-08-19
luvhl 2020-08-17
移动开发与培训 2020-08-16
ReunionIsland 2020-08-16
lyqdanang 2020-08-16
NARUTOLUOLUO 2020-08-03
MyNameIsXiaoLai 2020-07-08
星辰的笔记 2020-07-04
csstpeixun 2020-06-28
letheashura 2020-06-26
liaoxuewu 2020-06-26
OldBowl 2020-06-26
北京老苏 2020-06-25
Luffyying 2020-06-25