2010-09-08 48 views
1

我們的Topic對象具有isChannel和getChannel公共方法。對象圖太複雜,無法改變。 Channel有一個Integer類型。可能指定訪問JSP EL中的isAttribute vs getAttribute?

我們正在從一個應用程序服務器遷移到Tomcat。當使用這個表達式$ {topic.channel.type}時,在JSP中,我們當前的應用服務器找到getChannel方法。但是,Tomcat發現isChannel方法,並且由於返回類型是布爾型而不是通道,因此我們得到錯誤。有沒有辦法告訴Tomcat通過布爾公共方法來使用getter?

現在我只是要編寫一個輔助函數或公開一個新的方法,但我有一種感覺,我會在遷移過程中遇到這種情況。

+0

您是否使用用於前一個應用程序服務器的Tomcat使用相同的JVM? – kschneid 2010-09-09 13:21:15

+0

對於兩者都是1.6。 – Eric 2010-09-09 13:26:41

回答

1

不幸的是,你不能強制這樣的方法調用。

我已經檢查了Javabeans和EL規範,但是沒有指定當存在isXXX()getXXX()方法時首選的方法。但是,我確實同意在這種情況下更喜歡getXXX()。這應該也是可以編程的。我認爲將這作爲針對Tomcat EL實施的問題報告是值得的。

+0

如果我可以登錄,我會upvote你。謝謝。本網站上的密碼重置已中斷。 – Eric 2010-09-09 13:31:46

+0

如果你有15個聲望,你只能升級。只需勾選左側的複選標記也足夠了:) – BalusC 2010-09-09 14:03:32

0

從理論上講,這應該是一個比EL實現問題更多的JavaBeans問題。您可以嘗試的一件事是瞭解java.beans.Introspector如何查看您的Topic類。一種方法是運行this code我爲Struts wiki寫了一段時間。根據課程的複雜程度,創建一個明確的java.beans.BeanInfo課程可能會強制channel屬性始終作爲Integer公開。