2013-10-21 76 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)。看看我的編輯。 –