Wie kann ich das angeklickte Element in der ajax-Methode?

Angenommen, der code von dieser Seite:

<h:form prependId="false" id="form">

    <h:selectManyCheckbox id="checkBoxList" value="#{backedBean.lstIdSelectedItems}" layout="pageDirection">
        <f:selectItems value="#{backedBean.lstAvailableItems}" var="item" itemLabel="#{item.label}" itemValue="#{item.value}" />
        <f:ajax listener="#{backedBean.itemClicked}" />
    </h:selectManyCheckbox>

</h:form>

Und den code des session-managed-bean:

public class BackedBean implements Serializable {
   private List<SelectItem> lstAvailableItems;
   private List<Long> lstIdSelectedItems;

public BackedBean() {
    lstAvailableItems = new ArrayList<SelectItem>();
    lstIdSelectedItems = new ArrayList<Long>();
}

@PostConstruct
private void postConstruct(){
    for (int i = 0; i < 10; i++) {
        SelectItem item = new SelectItem(new Long(i), "CHKID " + i);
        lstAvailableItems.add(item);
    }
}

public void itemClicked(AjaxBehaviorEvent ae){
    HtmlSelectManyCheckbox uiCmp = (HtmlSelectManyCheckbox)ae.getSource();

    //(1) Here I would like to get the ID of the item that has been clicked.

}

In (1) wie erhalte ich die ID von dem element, das angeklickt wurde durch den Benutzer. Ich sehe in der lstIdSelectedItems array-Liste mit den IDs aller Elemente, die der Benutzer ausgewählt, aber wie bekomme ich die ID des Elements, das der Benutzer geklickt hat?

Ich habe versucht, verwenden Sie die f:Attribut-tag in der selectManyCheckbox, aber das Attribut wird nicht in der Komponente anzeigen, wenn der ajax-listener-Methode aufgerufen wird, in die gesicherte bean. Ich habe diese verwendet, aber funktioniert nicht:

<h:selectManyCheckbox id="checkBoxList" value="#{backedBean.lstIdSelectedItems}" layout="pageDirection">
    <f:selectItems value="#{backedBean.lstAvailableItems}" var="item" itemLabel="#{item.label}" itemValue="#{item.value}">
        <f:attribute name="clicked" value="#{item.value}" />
    </f:selectItems>
    <f:ajax listener="#{backedBean.itemClicked}" />
</h:selectManyCheckbox>

Irgendwelche Ideen?

Grüße.

InformationsquelleAutor yersan | 2012-12-27
Schreibe einen Kommentar