簡體   English   中英

使用 RequestScoped Bean 和渲染屬性的正確方法是什么?

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

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