2017-04-25 48 views
0

當我選中「選中所有複選框」複選框時,ajax不起作用。勾選'全選'複選框不會調用p:ajax標籤JSF

<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

您沒有提供明確的事件,因此它回退到默認事件。您是否檢查了文檔以查看是否存在另一個(非默認)「全部檢查」事件? – Kukeltje

回答

2

由於Kukeltje已經指出'選擇所有'行爲不會觸發您的標籤捕獲的默認ajax事件。

<號碼::正在被當您選擇所有被稱爲「toggleSelect」,所以你需要添加另一個AJAX標籤這樣解僱了AJAX事件AJAX事件=「toggleSelect」 ......

+0

謝謝......... – Kukeltje