FreeMarker 中数值比较的问题

红薯 发布于 2009/05/18 22:36
阅读 11K+
收藏 1

首先看看下面这段脚本代码:

<#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 的高手请不吝赐教。

加载中
1
红薯
红薯

哈哈,刚发完贴突然想到了问题所在

<#assign parent = RequestParameters["id"]!'0'?number/>

这条语句应该改为

<#assign parent = (RequestParameters["id"]!'0')?number/>

0
kennedy
kennedy
多谢 刚好我也遇到了此问题
返回顶部
顶部