使用HTTL整数相等判断不正确

Rajab 发布于 2013/07/21 11:21
阅读 899
收藏 0

@梁飞 你好,想跟你请教个问题:

我前页面中传入了一个categories对象(List<Category>类型,Category中有int id, int pid)

<!--#set(List<Category> categories)-->
<!--#for(Category category : categories) -->
    ${category.pid == 0}  <!--永远是false,哪怕pid确实为0 -->
    ${category.id == 1}   <!--永远是false,哪怕id确实为1  category.id + 1 == 2 这个却判断正确-->
    ${category.id - 1 == 0}   <!--对于id为1的这次输出正确是true -->
<!--#end-->


同样使用if判断也是一样,直接判断出错,而计算都是没有问题 。开始我以为是不是id类型不对
${category.id is Integer} ---> true 没有问题
${category.id = 1L} 仍然是false
无奈,换回freemarker了


加载中
0
南湖船老大
南湖船老大
这也太奇葩了吧
0
Rajab
Rajab

引用来自“好大的凶兆”的答案

这也太奇葩了吧
确实。不知道哪儿错了。换成freemarker就好了。
0
kidbei
kidbei
<!--#set(List<Category> categories)-->
<!--#for(Category category : categories) -->
    <!--#set(int cpid = category.pid)-->
    ${cpid == 0}  <!--永远是false,哪怕pid确实为0 -->
    ${cpid == 1}   <!--永远是false,哪怕id确实为1  category.id + 1 == 2 这个却判断正确-->
    ${category.id - 1 == 0}   <!--对于id为1的这次输出正确是true -->
<!--#end-->    
试试
0
梁飞
梁飞
我测一下。
0
Rajab
Rajab

@梁飞   版本是1.0.10,我用的是jfinal的集成,可能和上面的描述有些差异,准确的来说的是这样的

<!--#set(List<Record> categories)-->        
        <!--#for(Record category : categories) -->
        <tr>
            <td>${category.id}</td>
            <td>${category.name}</td>
            <td>${category.pid}</td>
            <td>${category.pname}</td>
            <td>${category.pid==0}</td>
            <td>${category.id==1}</td>
            <td>${category.id-1==0}</td>
            <td>${category.pid is Integer}</td>
        </tr>
        <!--#end-->
输出结果

我写了一个测试的web工程,您可以下载

http://pan.baidu.com/share/link?shareid=395567303&uk=2399463316

用的mysql数据库,里面有脚本,运行时还请配置WEB-INF\database.properties文件,里面有数据库的设置。

实在是搞不清楚原因。

0
梁飞
梁飞

看一下对象的类型:

${category.pid.class.name}

${category.id.class.name}

0
梁飞
梁飞
试一下:${category.id == 1I}
0
Rajab
Rajab

引用来自“梁飞”的答案

看一下对象的类型:

${category.pid.class.name}

${category.id.class.name}

@梁飞   这这这。神奇啊。

返回顶部
顶部