单击复选框时,不会调用SelectManyCheckbox的事件侦听器。
我的SelectManyCheckbox代码:
SelectManyCheckbox smcb = new SelectManyCheckbox();
UISelectItem item = new UISelectItem();
item.setItemValue("ItemValue");
item.setItemLabel("ItemLabel");
smcb.getChildren().add(item);
我尝试过AjaxBehavior:
AjaxBehavior ajaxBeh = (AjaxBehavior) fc.getApplication().createBehavior(AjaxBehavior.BEHAVIOR_ID);
ajaxBeh.setRender(Collections.singletonList("@this"));
ajaxBeh.setExecute(Collections.singletonList("@this"));
ajaxBeh.setImmediate(true);
ajaxBeh.setTransient(true);
ajaxBeh.addAjaxBehaviorListener(new AjaxBehaviorListener() {
@Override
public void processAjaxBehavior(AjaxBehaviorEvent e)
throws AbortProcessingException {
System.out.println("Event Triggered");
}
});
smcb.addClientBehavior("change",ajaxBeh);
以及ValueChangeListener:
public class CustomValueChangeListener implements ValueChangeListener {
@Override
public void processValueChange(ValueChangeEvent arg0)
throws AbortProcessingException {
System.out.println("processValueChange");
}
}
smcb.addValueChangeListener(new CustomValueChangeListener ());
上述两种方法都不起作用。
如何设置事件监听器,以便在选中或取消选中复选框时调用它?
答案 0 :(得分:0)
我认为您可以尝试通过调用valueChangeListener从jsf代码运行ajax事件并在Bean端处理您的选择。
JSF Code:
<p:selectManyCheckbox id="custom" columns="1" layout="pageDirection" value="#{dapBean.selection}" disabled="#{!dapBean.status}"
valueChangeListener="#{dapBean.checkListener}">
<f:selectItems value="#{dapBean.toolOptions}" var="tool" itemLabel="#{tool.toolLabel}" itemValue="#{tool.toolLabel}" />
<f:ajax event="valueChange" update = "@form"></f:ajax>
</p:selectManyCheckbox>
可以使用后端的valueChangeListener进行备份。
Java Code:
public void checkListener(ValueChangeEvent e) {
System.out.println(e.getNewValue().toString());
System.out.println(e.getOldValue().toString());
}
每当您选中或取消选中复选框时,您都可以获得所选和未选中的条目。
希望它有所帮助!!