有人知道如何在 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 确实有一个空数据列表,因此不应呈现面板。这会导致甚至不会调用操作方法 - 因为按钮不存在。
如果您当时对填充数据表不感兴趣,只需添加额外的检查即可rendered
属性(如果感兴趣的命令按钮已被调用)。您可以通过检查请求参数映射中按钮的客户端 ID 是否存在来做到这一点。
<p:outputPanel rendered="#{not empty requestScopedBean.dataList or not empty param[someButton.clientId]}">
...
<p:commandButton binding="#{someButton}" ... />
</p:outputPanel>
也可以看看:
- 如何让验证取决于按下的按钮? https://stackoverflow.com/questions/8370675/how-to-let-validation-depend-on-the-pressed-button
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)