可以在JSP EL中指定对isAttribute vs getAttribute的访问吗?

时间:2010-09-08 16:49:31

标签: java jsp tomcat el

我们的Topic对象有两个isChannel和getChannel公共方法。对象图太复杂,无法改变这一点。 Channel有一个Integer类型。

我们正在从一个应用程序服务器迁移到Tomcat。使用此表达式$ {topic.channel.type}时,在JSP中,我们当前的应用服务器会找到getChannel方法。但是,Tomcat找到isChannel方法并且我们得到错误,因为返回类型是布尔值,而不是Channel。有没有办法告诉Tomcat更喜欢使用布尔公共方法的getter?

现在我只是要写一个辅助函数或者公开一个新方法,但我有一种感觉,我会在迁移过程中遇到这个问题。

2 个答案:

答案 0 :(得分:1)

不幸的是,你无法强制进行这样的方法调用。

我已经检查了Javabeans和EL规范,但是当isXXX()getXXX()方法都存在时,没有指定首选方法。但是,我同意在这种特殊情况下更喜欢getXXX()更合理。这也应该是编程可能的。我认为值得努力将此报告为针对Tomcat EL实现的问题。

答案 1 :(得分:0)

理论上,这应该是JavaBeans问题而不是EL实现问题。您可以尝试的一件事是找出java.beans.Introspector如何查看您的Topic课程。一种方法是运行this code我为Struts wiki写了一段时间。根据类的复杂程度,创建显式java.beans.BeanInfo类以强制channel属性始终显示为Integer可能是有意义的。