freemarker中巧妙处理Object类型的js参数

本文探讨了在Freemarker模板中处理JS动态参数的方法,对比了使用if语句与直接创建js对象两种策略,强调了后者在代码可读性和简洁性上的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近工作中写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的属性。顿时觉得高端大气上档次了,有没有?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值