0

有人知道如何在 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 确实有一个空数据列表,因此不应呈现面板。这导致甚至没有调用操作方法 - 因为按钮不存在。

4

1 回答 1

2

如果您此时对填充数据表不感兴趣,只需在rendered调用了感兴趣的命令按钮时添加一个额外的签入属性。您可以通过检查请求参数映射中是否存在按钮的客户端 ID 来做到这一点。

<p:outputPanel rendered="#{not empty requestScopedBean.dataList or not empty param[someButton.clientId]}">
    ...

    <p:commandButton binding="#{someButton}" ... />
</p:outputPanel>

也可以看看:

于 2015-10-01T11:53:32.567 回答