このページのコードとしますクリックしたアイテムをajaxメソッドで取得するにはどうすればよいですか?
<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>
をし、セッションのコードは、Beanを管理する:(1)私がクリックされた要素のIDを取得したいと思いで
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.
}
ユーザーによって。 lstIdSelectedItems配列リストに、ユーザーが選択したすべての要素のIDが表示されますが、ユーザーがクリックした要素のIDはどのように取得できますか?
selectManyCheckbox内でf:attributeタグを使用しようとしましたが、バッキングBeanでajaxリスナーメソッドが呼び出されたときに、その属性がコンポーネントマップにありません。私はこれを使用しましたが、動作しません:
<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>
アイデアはありますか?
よろしくお願いいたします。
答えはこのOPのコメントに属しています...この質問は4年前に尋ねられ、受け入れられた(そして徹底的な)回答がありました。 – kwishnu