我有一个JSF:Primefaces SelectCheckBoxMenu
<p:selectCheckBoxMenu value="#{domain.listaa}" label="Chooese!" style="height:25px" showCheckBox="true"> <p:ajax update="records" listener="#{domain.muti}" /> <f:selectItems value="#{domain.recLabels}"/> </p:selectCheckBoxMenu>
在托管bean中:
private boolean[] recFlags = new boolean[]{true,true,true}; private String[] recLabels = new String[]{"A","AAAA","MX","NS","SOA","CNAME","TXT"}; private List<String> listaa = new ArrayList<>(); public void muti(AjaxBehaviorEvent event){ Arrays.fill(recFlags,false); for(int i=0;i<recLabels.length;i++){ if(listaa.contains(recLabels[i])){ recFlags[i]=true; } } System.out.println(listaa.toString()); }
所以在SelectCheckBoxMenu我按任意按钮,ajax调用正在运行,muti()函数将运行.没有问题.
但是,如果我按下SelectCheckBoxMenu中的“全选”(最上面)按钮,则ajax调用不起作用,muti()函数将无法运行,listaa(按下复选框的列表)不会改变.
为什么?我如何解决,“全选”按钮有效?
在Primefaces 4和5中,有一个特殊的ajax事件,用于’Toggle all’复选框 – toggleSelect.
原文链接:https://www.f2er.com/ajax/159895.html<p:selectCheckBoxMenu value="#{domain.listaa}" label="Chooese!" style="height:25px" showCheckBox="true"> <p:ajax update="records" listener="#{domain.muti}" /> <p:ajax event="toggleSelect" update="records" listener="#{domain.muti}" /> <f:selectItems value="#{domain.recLabels}"/> </p:selectCheckBoxMenu>