[英]Accessing JSF SelectItem.Label and Value from XHTML without selectOneMenu
我在其中一個應用程序中遇到了一些國際化問題。 故事是這樣的:
我有一個顯示記錄的數據表和一個selectOneMenu,以便選擇要過濾的dataTable的列。 selectOne提供有SelectItem,這些SelectItem在DataRefresh時根據備用bean中的實際語言環境填充。
現在,當用戶更改語言環境時,selectOne的內容將保留在舊的語言環境中,直到重新呈現頁面為止。 這是很合邏輯的,也是可以預期的。
我當然希望改變。
因此,我嘗試編寫自己的selectOne,該selectOne使用selectItems包含對languageFile條目的引用,以便能夠更改它們而無需重新呈現。
這是我嘗試過的
<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告訴我該項目沒有Label或Value屬性,我幾乎不相信。 ;)
有誰知道如何以這種方式訪問此屬性?
在我看來,您應該寫:
#{item.value}
而不是#{item.Value}
,因為標准JavaBeans約定是讓xyz
屬性具有getXyz()
getter。
另外,為什么不向UI組件提供valueChangeListener
以便進行語言環境選擇,然后在其內部填充該語言環境的選擇項標簽。 這樣,您可以使用標准的f:selectItems
標記。
我通過兩次存儲filterfield解決了這個問題。 對於每種語言一次-呈現運行時決定。 這不是一個很好的方法,但是可以。 無法使changeListener運行...
您也可以這樣做,以便您的命令鏈接重新呈現頁面,以便它自動執行您需要的操作。 不知道這是否滿足您的要求。 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.