FreeMarker 中数值比较的问题

发布于 2021-11-28 22:16:18 字数 905 浏览 878 评论 2

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

<#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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

感情旳空白 2021-11-29 04:53:24

多谢 刚好我也遇到了此问题

勿忘初心 2021-11-29 01:04:30

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

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

这条语句应该改为

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文