jsp关于<%=%>和out.print()的问题(怀疑是jsp的bug)

昨天在做hibernate映射的时候为了避免int型数据在数据库里的null和对象里的0不匹配的问题,我把所有的domain对象的int成员都设计成Integer的了,然而我在jsp中用该对象时却出了很郁闷的问题:(比如我的News对象有一个int 型的position成员变量,我一开始是定义int的,可是后来改成了Integer)
一开始总是给我抛java.lang.NoSuchMethodError: domain.News.getPosition()I
我尝试各种方法都无效,结果把jsp中的<%out.print(news.getPosition);%>改为<%=news.getPostion()%>就没有问题了。
然后我在这个问题上又做了试验了发现如下规律:
1、一开始就定义为Integer的而不是先定义为int再在运行一段时间后改为Integer的变量不存在这个问题
2、<%=%>和out.print()没有谁对谁错,也就是说前面列子中如果一开始我在jsp中写的是<%=%>同样会发生这个问题,而且解决方法居然是相反的把<%=%>改为out.print()!
如果有人知道的话,将感激不尽!

第1个回答  2014-05-18
差括号了,另外Integer型的输出最好toString或是+""一下
<%out.println(news.getPosition()+"")%>追问

额,不是括号的问题,是我没有打出来,括号的话Eclipse会帮我检查出来的。还有自动拆包和装包应该没有必要去可以转换的(我已经做过单元测试了)。最重要的是像我所说的第二点。不知有何高见?

相似回答
大家正在搜