簡體   English   中英

在不使用selectOneMenu的情況下從XHTML訪問JSF SelectItem.Label和Value

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM