Jsf 为什么不为primefaces SelectManyCheckbox调用事件侦听器?
单击复选框时,不会调用SelectManyCheckbox的事件侦听器 我的SelectManyCheckbox代码:Jsf 为什么不为primefaces SelectManyCheckbox调用事件侦听器?,jsf,primefaces,Jsf,Primefaces,单击复选框时,不会调用SelectManyCheckbox的事件侦听器 我的SelectManyCheckbox代码: SelectManyCheckbox smcb = new SelectManyCheckbox(); UISelectItem item = new UISelectItem(); item.setItemValue("ItemValue"); item.setItemLabel("ItemLabel"); smcb.getChil
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);
还有一点:
public class CustomValueChangeListener implements ValueChangeListener {
@Override
public void processValueChange(ValueChangeEvent arg0)
throws AbortProcessingException {
System.out.println("processValueChange");
}
}
smcb.addValueChangeListener(new CustomValueChangeListener ());
上述两种方法都不起作用
如何设置一个事件侦听器,以便在选中或取消选中复选框时调用它?我认为您可以通过调用一个函数从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>
每次勾选或取消勾选复选框时,您都可以获得选中和未选中的条目
希望能有帮助 谢谢你的建议。我已经为jsf中定义的SelectManyCheckbox使用了ValueChangeListener和ajax事件监听器,但在本例中(由于数据的动态性质),我必须在支持bean中创建SelectManyCheckbox。对于在支持bean中创建的SelectManyCheckbox,是否可以使用ValueChangeListener和ajax事件?为什么需要在Java中这样做
Java Code:
public void checkListener(ValueChangeEvent e) {
System.out.println(e.getNewValue().toString());
System.out.println(e.getOldValue().toString());
}