我有一个带有渲染属性的panelGroup。如果render属性设置为false,为什么甚至会调用panelGroup中的组件值?我是否想念这里的渲染属性?
我想要做的是:我在panelGroup之前有一个selectManyCheckbox,只有当用户在selectManyCheckbox中选择了值并点击按钮时才能执行panelGroup中的所有内容。这不会像这样工作,因为panelGroup中的组件取决于用户必须在selectManyCheckbox中选择的值。
<h:selectManyCheckbox /> // for the user to choose
<h:commandButton /> // to render the panelGroup
<h:panelGroup rendered="#{someBean.render}">
<h:dataTable value="#{someOtherBean.loadSomething(someObject)}" var="item">
// ...
</h:dataTable>
</h:panelGroup>
答案 0 :(得分:7)
rendered
属性只是说明是否应在客户端DOM上呈现以下组件。这些组件仍将遵循JSF生命周期事件,并将维护托管bean的值。
编辑:响应变通办法的请求:
我可以看到解决这个问题的最简单方法,如果你不希望value属性调用bean方法,那么只需在bean方法中包含逻辑,并使用if检查渲染条件。
public void loadSomething(Object someObject) {
if (render()) {
//Do loadSomething logic
}
}