从managedbean更改组件属性

时间:2013-10-21 09:09:14

标签: jsf primefaces

我正在尝试从managedbean更改primefaces组件的属性。我有一个组件selectCheckboxMenu实现如下:

<p:selectCheckboxMenu value="#{formBean.selectedMovies}" label="Movies" filter="true" filterText="Filter" filterMatchMode="startsWith" panelStyle="width:220px">  
    <f:selectItems value="#{formBean.movies}" />
    <p:ajax update="treeTableForm" listener="#{formBean.listenMovieChange}" />  
</p:selectCheckboxMenu>

我想在方法listenMovieChange中从managedbean更改此组件的属性标签。我怎样才能做到这一点?我尝试这种方法的原因是,我在页面中有很多selectCheckboxMenu组件。

1 个答案:

答案 0 :(得分:0)

您需要创建绑定组件列表才能在服务器端编辑它们。为了获得你必须根据被激活的ajax事件选择哪一个,只需将组件本身作为方法参数发送(假设你正在使用EL 2.2):

//You'll need to initialize them setting the proper values
private List<SelectCheckBoxMenu> checkBoxes;

//GETTER AND SETTER

public void listenMovieChange(SelectCheckBoxMenu menuToProcess){
    menuToProcess.setLabel(newLabel());
}
<ui:repeat var="checkboxmenu" value="#{formBean.checkBoxes}">

    <p:selectCheckboxMenu
        filter="true" filterText="Filter" filterMatchMode="startsWith" 
        panelStyle="width:220px" binding="#{checkboxmenu}">  
        <f:selectItems value="#{formBean.movies}" />
        <p:ajax update="treeTableForm" listener="#{formBean.listenMovieChange(checkboxmenu)}" />  
    </p:selectCheckboxMenu>

</ui:repeat>