[英]What is the correct way to use RequestScoped Bean and rendered attribute?
有人知道如何在 jsf 中將 RequestScoped bean 與渲染屬性一起使用嗎? 呈現的屬性在 applyValues 階段之前進行評估,因此未正確評估。 我不想保留任何狀態。 該示例可以是帶有數據表和按鈕的 outputPanel。 數據表獲取值列表。 包裝 outputPanel 具有渲染屬性,如:
<p:outputPanel rendered="#{not empty requestScopedBean.dataList}">
<p:datatable value="#{requestScopedBean.dataList}">
...
</p:datatable>
<p:commandButton action="#{requestScopedBean.someAction}" />
</p:outputPanel>
加載頁面並單擊按鈕后,沒有任何反應,因為視圖已恢復並已評估表達式 - bean 確實有一個空的數據列表,因此不應呈現面板。 這導致 action 方法甚至沒有被調用 - 因為按鈕不存在。
如果此時您對填充數據表不感興趣,只需在感興趣的命令按鈕已被調用的情況下在rendered
屬性中添加一個額外的檢查。 您可以通過檢查請求參數映射中按鈕的客戶端 ID 是否存在來實現。
<p:outputPanel rendered="#{not empty requestScopedBean.dataList or not empty param[someButton.clientId]}">
...
<p:commandButton binding="#{someButton}" ... />
</p:outputPanel>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.