2009-08-14 30 views
0

我在我的一個應用程序中遇到了一點國際化問題。 這個故事是這樣的:在沒有selectOneMenu的情況下從XHTML訪問JSF SelectItem.Label和Value

我有一個數據表顯示記錄,selectOneMenu以 的順序選擇要過濾的dataTable列。 selectOne爲 ,其中帶有SelectItems,它們根據DataRefresh時間的 支持bean中的實際語言環境填充。

現在,當用戶更改區域設置時,selectOne的內容將保留在舊區域設置 中,直到頁面重新渲染。這非常符合邏輯和預期。

當然我想要改變。

於是,我試着寫一個自己的selectOne它使用含有以能夠改變它們而不 重新描繪 引用languageFile項selectItems的。

這裏就是我試圖

<select id="j_id5:filterSelector" name="j_id5:filterSelector" size="1"> 
    <c:forEach var="item" items="#{gridBean.filterFields}"> 
     <option value="#{item.Value}">#{msg[item.Label]}</option> 
    </c:forEach> 
</select> 

可悲的是JSF告訴我的項目沒有一個標籤或值的屬性,它 我幾乎不敢相信。 ;)

有沒有人有一個想法如何訪問這個屬性這種方式?

回答

0

我解決了存儲filterfields兩次的問題。每種語言一次 - 渲染的運行時間延遲。不是一個好的,但它的作品。不能讓changeListener去...

1

在我看來,你應該寫:

#{item.value} 

代替#{item.Value},作爲標準的JavaBeans的約定是有getXyz() getter方法xyz財產。

此外,爲什麼不提供valueChangeListener到UI組件以供區域設置選擇,然後在其中填充該區域設置的選擇項目標籤。這樣你可以使用標準的f:selectItems標籤。

+0

thx爲答案,我現在可以訪問屬性。我的哦。 我同意valueChangeListener將是更好的方法 去。我並不十分確定如何將它集成到我的應用程序中。 通常我有一個LanguageSelectioBean,它顯示兩個標記 ,它們通過commandLinks改變點擊的語言環境。 - >可以通過命令鏈接觸發valueChange事件嗎? 其次,我的數據表是一個組件,我在我的應用程序的幾個 位置中使用。我需要擴展它以使其聽取 的valueChanges並重新查詢語言文件onValueChange,對不對? thx K – KB22 2009-08-17 06:09:27

0

你也可以讓你的命令鏈接重新呈現頁面,以便它自動做你需要它。不知道這是否符合您的要求。 :)

相關問題