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