2013-10-21 34 views
0

我试图从managedbean更改primefaces组件的属性。我有一个组件selectCheckboxMenu实现,如:从managedbean更改组件属性

<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> 

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

回答

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> 
+0

我能做到这一点,但如果我在同一页面中有很多这些组件,用户可以增加这些组件的数量,我该怎么办? –

+0

然后你不会只有标签本身的问题,而是整个组件。然后,您应该创建一个绑定[SelectCheckBoxMenu]列表(http://www.primefaces.org/docs/api/4.0/org/primefaces/component/selectcheckboxmenu/SelectCheckboxMenu.html)。看看我的编辑。 –