FreeMarker 中数值比较的问题
首先看看下面这段脚本代码:
<#assign parent = RequestParameters["id"]!'0'?number/>
<select name='parent'>
<#list Tag.ListTags(0) as tag>
<option value='${tag.id}'<#if (tag.id==parent)> selected</#if>>${tag.name}</option>
</#list>
</select>
其用意很简单,就是页面中的一个下拉框默认选中参数id传入的项。
但是该代码执行时候却是错误的,错误信息是说 <#if (tag.id==parent)> 这个比较语句两边的操作对象类型不同,左边是 SimpleNumber 而右边是 SimpleScalar ,实际的错误信息如下:
freemarker.template.TemplateException: The only legal comparisons are between two numbers, two strings, or two dates.
Left hand operand is a freemarker.template.SimpleNumber
Right hand operand is a freemarker.template.SimpleScalar
难道要自己编写个方法来读取参数,并转换成 int 或者是 long ??
然后就不会知道该如何解决这个问题了,有 FreeMarker 的高手请不吝赐教。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
多谢 刚好我也遇到了此问题
哈哈,刚发完贴突然想到了问题所在
<#assign parent = RequestParameters["id"]!'0'?number/>
这条语句应该改为
<#assign parent = (RequestParameters["id"]!'0')?number/>