2010-03-01 123 views
0

我有一個人類和一個類名。名稱包含兩個字符串firstName和lastName。 Person包含一個Name對象以及一些額外的信息。如何使用JSF EL訪問人員中的firstName和lastName屬性。我正在使用帶註釋的JSF 2.0。如何從JSF中的自定義類中的自定義類訪問屬性?

我有一個註冊頁面,我正在創建一個新人。我有一個名爲PersonBean的託管bean,其中包含一個Person實例。我試圖在我的xhtml頁面中使用以下標記設置第一個:#{personBean.person.name.firstName}。這給了我一個空錯誤。

確切代碼:

<h:inputText label="First Name" id="fname" value="#{personBean.user.name.firstName}" required="true"/>

確切的錯誤信息:"value="#{personBean.user.name.firstName}": Target Unreachable, 'null' returned null".

我相信這個錯誤的事實,我想打電話從Name對象getter/setter方法時,Person對象是莖尚未實例化。

感謝

回答

2

我想你已經給自己的答案:「Person對象還沒有實例化」,除非它們被管理的Bean JSF不會爲你創建對象。所以你應該在訪問名字之前實例化對象Person。您可以在bean實例化時或在導致組件顯示的用戶操作期間執行此操作。

你可能不想讓Person對象管理的bean,但你可以做到這一點,然後把它注入到personBeanhttp://balusc.blogspot.com/2006/06/communication-in-jsf.html#InjectingManagedBeansInEachOther

+0

謝謝!我沒有意識到JSF不會實例化我的對象,除非它們被管理。我只是在構造函數中添加了一個初始化。我現在感到很傻! – kgrad 2010-03-01 19:38:40

-1

我也有這個問題。

您的managed-bean-name應該是小寫(配置您的faces-config.xml爲小寫字母並在您的頁面中使用它)。

使用#{} personBean.name但沒有#{} PersonBean.name

相關問題