den Code dieser Seite Angenommen:Wie kann ich das angeklickte Element in der Ajax-Methode erhalten?
<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 einer Sitzung 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) Ich möchte die ID des Elements erhalten, die angeklickt wurde vom Benutzer. Ich kann in der Liste lstIdSelectedItems die IDs aller vom Benutzer ausgewählten Elemente sehen, aber wie kann ich die ID des Elements erhalten, auf das der Benutzer geklickt hat?
Ich habe versucht, das f: Attribut-Tag innerhalb der SelectManyCheckbox zu verwenden, aber das Attribut ist nicht in der Komponentenzuordnung, wenn die Ajax-Listener-Methode in der Backed Bean aufgerufen wird. Ich habe das benutzt, 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.
Eine Antwort dieser Brief gehört als Kommentar zum OP ... Bitte beachten Sie auch, dass diese Frage vor vier Jahren gestellt wurde und eine akzeptierte (und gründliche) Antwort hatte. – kwishnu