选中'check all'复选框不会调用p:ajax标记JSF

时间:2017-04-25 12:56:13

标签: ajax jsf primefaces

当我选中“选中所有框”复选框时,

ajax不起作用。

 <p:selectCheckboxMenu id="departmantCheckBox" value="#{marketAnalysisReportController.selectedDepartmants}"  filter="true" filterMatchMode="startsWith" panelStyle="width:250px">
            <p:ajax update="saleCheckBox" listener="#{marketAnalysisReportController.updateSales}"/>
            <f:selectItems value="#{marketAnalysisReportController.departmants}" var="departmant"
                            itemValue="#{departmant}"
                            itemLabel="#{departmant.name}"/>
        </p:selectCheckboxMenu>

这是更新方法

public void updateSales(){
        sales=new ArrayList<Obje>();
        System.out.println("updatesales");
        for(Obje departmant: selectedDepartmants){
            System.out.println(departmant.name);
            if(departmant.getName().equals("test1")){
                sales.add(new Obje(20,"salestest20"));
                sales.add(new Obje(21,"salestest21"));
                System.out.println("add");
            }
            if(departmant.getName().equals("test2")){
                sales.add(new Obje(200,"salestest200"));
                sales.add(new Obje(210,"salestest210"));
            }
            if(departmant.getName().equals("test3")){
                sales.add(new Obje(250,"salestest250"));
                sales.add(new Obje(260,"salestest260"));
            }
            if(departmant==null || departmant.equals("")){
                sales=new ArrayList<Obje>();
            }
        }
    }

如果我逐个复选框,它可以正常工作,但当我选中“勾选所有复选框”时,它不会更新销售。如果需要,我可以分享更多细节。

1 个答案:

答案 0 :(得分:2)

由于Kukeltje已经指出'select all'动作不会触发你的标签捕获的默认ajax事件。选择all时触发的ajax事件称为'toggleSelect',因此您需要添加另一个ajax标记,如下所示:

  

&LT; p:ajax event =“toggleSelect”......