我们的Topic对象有两个isChannel和getChannel公共方法。对象图太复杂,无法改变这一点。 Channel有一个Integer类型。
我们正在从一个应用程序服务器迁移到Tomcat。使用此表达式$ {topic.channel.type}时,在JSP中,我们当前的应用服务器会找到getChannel方法。但是,Tomcat找到isChannel方法并且我们得到错误,因为返回类型是布尔值,而不是Channel。有没有办法告诉Tomcat更喜欢使用布尔公共方法的getter?
现在我只是要写一个辅助函数或者公开一个新方法,但我有一种感觉,我会在迁移过程中遇到这个问题。
答案 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
可能是有意义的。