2011-06-07 299 views
3

我有一个带有渲染属性的panelGroup。为什么在渲染属性设置为false的情况下甚至会调用panelGroup中的组件值?我是否在这里误解了渲染的属性?JSF:渲染属性

我想要做的是:我有一个selectManyCheckbox之前panelGroup和panelGroup中的一切只应该执行,如果用户选择了selectManyCheckbox中的值并按下按钮。这不会像这样工作,因为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> 

回答

6

rendered属性只是指出如果下列组分应当在客户端DOM被渲染。这些组件仍将遵循JSF生命周期事件并将维护托管bean的值。

编辑:在回答有关解决方法的请求:

我可以看到最简单的方法来解决此,如果你不想要的值属性来调用bean方法,然后简单地包裹在bean的逻辑方法在渲染条件上进行if检查。

public void loadSomething(Object someObject) { 
    if (render()) { 
    //Do loadSomething logic 
    } 
} 
+0

任何变通办法? – 2011-06-07 12:06:11

+0

我添加了一个解决方法,我的回答以上。 – 2011-06-07 12:24:45

+0

谢谢你的解决方法! – geeehhdaa 2011-06-07 12:48:05