电话号码:selectCheckboxMenu“全选”不会调用AJAX监听器监听器、全选、电话号码、selectCheckboxMenu

2023-09-10 19:47:40 作者:总是不停敷衍不停抱歉

我有一个JSF:Primefaces SelectCheckBoxMenu

I have a 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,true,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我preSS任何按钮,Ajax调用的工作,和穆蒂()函数将运行。没有问题。 但是,如果我preSS的全选,在SelectCheckboxMenu(最上面)按钮,Ajax调用不工作,穆蒂()函数将无法运行,listaa(列表关于pressed checkboxs)被不改变。 为什么?我该如何解决,是全选按钮的作品?

So in the SelectCheckBoxMenu I press any button, the ajax call is working, and the muti() function will run. There is no problem. But if I press the 'select all' (most above) button in the SelectCheckboxMenu, the ajax call is not working, muti() function won't run and the listaa (List about the pressed checkboxs) is not changing. Why? How can I solve, that 'select all' button works?

推荐答案

在Primefaces 4和5中有一个特殊的AJAX事件切换所有复选框。 - toggleSelect

In Primefaces 4 and 5 there is a special ajax event for 'Toggle all' checkbox - toggleSelect.

只是具有相同属性的默认AJAX事件添加它。

Just add it with the same attributes as your default ajax event.

<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>