0

我正在尝试从 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 组件。

4

1 回答 1

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>
于 2013-10-21T09:27:07.120 回答