我想在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}」/>