2011-05-06 54 views
0

我想在Seam中使用豐富的面孔來做一件簡單的事情。我顯示了來自其他來源的複選框列表,例如Ldap(組或角色),我想將選中的對象保存到我自己的表中,以便爲組調用配置文件。煤層:Richfaces h:selectManyCheckbox無法獲取檢查值?

現在我不擅長這個,對此我很抱歉。我正在使用一個動作從getLdapOrgs方法的ldap方法加載配置文件,它返回一個NGBProfiles列表,選中的那些應轉移到同一動作的selectedNgbs。 selectedNgbs也是相同類型的列表。該動作實現了ValueChangeListener,所以我有一個processValueChange方法重載,它現在不做很多事情因爲它永遠不會在正確的時間被調用。

這是怎麼回事:我加載頁面,當我選擇一個複選框頁面重新加載自己。並且支票沒有了。並且保存按鈕從未被調用..也不是valuchangelistner?唯一可以調用的方法是getChosenNgbs方法。並且getLdapOrgs方法正確地從ldap加載角色。

我的動作類看起來是這樣的:

public void processValueChange(ValueChangeEvent arg0) 
     throws AbortProcessingException { 
    // TODO Auto-generated method stub 
    System.out.println("in alue chaneg listener"); 
    if (getChosenNgbs() != null) { 
      System.out.println(getChosenNgbs().size()); 
     } 

} 

public void setChosenNgbs(List<NotifyingBodyProfile> chosenNgbs) { 
    this.chosenNgbs = chosenNgbs; 
    for(NotifyingBodyProfile chosenNgb : chosenNgbs){ 
     entityManager.persist(chosenNgb);   
    } 
} 




public List<NotifyingBodyProfile> getChosenNgbs() { 
    return chosenNgbs; 
} 

public List<NotifyingBodyProfile> getLdapOrgs(){ 

//從LDAP }數據

public List<NotifyingBodyProfile> getchosenNgbsfromDB(){ 

    List<NotifyingBodyProfile> chosenNgbsList= entityManager.createQuery("from NotifyingBodyProfile").getResultList(); 

    return chosenNgbsList; 


} 

public void save(){ 
    System.out.print("size of chosen Ngbs on save" + this.chosenNgbs.size()); 
} 

的XHTML是非常簡單的爲好。 (對不起格式化,代碼塊不知何故不工作,以前它沒有工作...但現在不是它,我不能)

h:selectManyCheckbox title =「選擇你想要的NGB類型見」 佈局= 「將pageDirection」 值= 「#{ngbProfileAction.chosenNgbs}」 ID = 「selectBoxContainer」> valueChangeListener = 「#{ngbProfileAction.processValueChange}」> 標籤= 「#ngbProfile.name}」/>

a:support event =「onclick」reRender =「selectBoxContainer」/>

/h:selectManyCheckbox>

H:的commandButton值= 「保存」 行動= 「#{ngbProfileAction.save}」/>

回答

0

你有沒有嘗試添加ajaxSingle = 「true」 以一個:支持?

還與複選框我通常用 「的onchange」 事件

HTH