0

Primefaces コンポーネントの属性を managedbean から変更しようとしています。次のように実装されたコンポーネント 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 に答える