这两天在处理一个项目上的问题时,遇到了下面的这种情况:
原理:
服务端:使用hibernate查询数据库中相关表的部分字段,返回PageFinder类型结果;
客户端(PC):使用EL表达式${}遍历PageFinder类型结果展示。
现象:
客户端在展示时,针对查询出的结果与字符串比较时老是报错,例如:
<c:if test="${ className[0] == 'C'}">测试</c:if>
分析过程:
1.在页面上打印出${ className[0]}值,发现结果也是C,这就莫名其妙了;
2.网上搜索相关资料,发现一般有这么几种情况:
a.在编写EL表达式时,后面带入了空格,例如:
<c:if test="${ className[0] == 'C'} ">测试</c:if>
解决办法:
去掉空格,结果为:<c:if test="${ className[0] == 'C'}">测试</c:if>
b.传值的时候换行了 导致不相等,例如:
参考路径:http://bbs.csdn.net/topics/392051062 |
解决办法:
去掉换行
3.按照2.检查发现都不是这些问题,检查查询的表对应的字段,发现数据库中定义的是char(1)类型的,
感觉客户端页面比较时使用的是char类型和字符串比较,所以不相等。
解决办法:
找到C对应的ascII码值,换成<c:if test="${ className[0] == '67' } ">测试</c:if>,
测试正常,问题解决。