2014-12-02 51 views
0

我使用下面的代碼:表達式語言 - 如何訪問整個數組?

<p:inputText label="Bezeichnung" 
    required="#{param['form_inhalt:artikeldatatable[0]:entfernen']==null}" 
      value="#{artikeldata.bezeichung}"></p:inputText> 

我需要訪問這個「artikeldatatable」所有ID。我如何能夠做到這一點? 如果表格中的任何按鈕被激活,它應該返回false。這工作正常,只需一個按鈕[0],但我需要檢查ID陣列中的所有按鈕。

#param['form_inhalt:artikeldatatable:0:entfernen']==nullANDparam['form_inhalt:artikeldatatable:1:entfernen']==null} 

有沒有辦法檢查整個數組?

基本上我從

PARAM搜索諸如* 所有ID的通配符[ 'form_inhalt:artikeldatatable:0:entfernen']

到 PARAM ['form_inhalt:artikeldatatable:99999: entfernen']

或者我必須編寫一個Java腳本函數迭代到數組並返回true嗎?

如果是這樣,我如何通過Javascript訪問#{param ... stuff?

非常感謝!

+0

什麼樣的數據結構是'form_inhalt:artikeldatatable [0]'? – Smutje 2014-12-02 11:25:36

+0

支持bean中的Primefaces Datatable,List(ArrayList)。 「entfernen」是命令按鈕的ID。 – 98percentmonkey 2014-12-02 12:29:29

+0

是否有必要訪問UI組件?否則,你可以訪問綁定的視圖bean對象。 – Smutje 2014-12-02 12:35:10

回答

0
private boolean checkButtonBeschaffung() { 
     boolean globalValue = false; 
     FacesContext facesContext = FacesContext.getCurrentInstance(); 
     Map<String, String> parameterMap = (Map<String, String>) facesContext.getExternalContext().getRequestParameterMap(); 

     for (int i = 0; i < 50; i++) { 
      StringBuilder sb = new StringBuilder("form_inhalt:artikeldatatable:"); 
      sb.append(i); 
      sb.append(":entfernen"); 
      String param = parameterMap.get(sb.toString()); 
      // Wenn irgendeiner der entfernen Buttons gedrueckt wurde, dann return = false 
      if (param == null) { 
       globalValue = true; 
      } else { 
       globalValue = false; 
       break; 
      } 
     } 
     return globalValue; 
    } 

我跑過RequestParameterMap,我會檢查所有的按鈕(好的,直到50),如果他們已被按下。