【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”
首先看看下面这段脚本代码:
<#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 的高手请不吝赐教。
哈哈,刚发完贴突然想到了问题所在
<#assign parent = RequestParameters["id"]!'0'?number/>
这条语句应该改为
<#assign parent = (RequestParameters["id"]!'0')?number/>