Шов: Richfaces h: selectManyCheckbox не может получить проверенные значения? - PullRequest
0 голосов
/ 06 мая 2011

Я пытаюсь сделать простую вещь в Seam, используя богатые лица. Я показываю список флажков из другого источника, такого как Ldap (группы или роли), и я хочу сохранить отмеченные в моей собственной таблице для групп, которые я называю профилями.

сейчас я не очень хорош в этом, за что заранее прошу прощения. Я использую действие для загрузки профилей из ldap в методе getLdapOrgs, он возвращает список NGBProfiles, проверенные из которых должны быть переданы в selectedNgbs того же действия. selectedNgbs также относятся к списку того же типа. действие реализует ValueChangeListener, поэтому у меня есть переопределенный метод processValueChange, который сейчас мало что делает, потому что он никогда не вызывается в нужное время.

Что происходит так: я загружаю страницу, и когда я устанавливаю флажок, страница перезагружается сама. и чек ушел и кнопка сохранения никогда не вызывается .. Ни оценщик списков ??? единственный вызываемый метод - это метод 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 } * +1010 *

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 вы хотите видеть" layout = "pageDirection" value = "# {ngbProfileAction.chosenNgbs}" id = "selectBoxContainer"> valueChangeListener = "# {ngbProfileAction.processValueChange}"> метка = "# ngbProfile.name}" />

a: support event = "onclick" reRender = "selectBoxContainer" />

/ ч: selectManyCheckbox>

h: commandButton value = "Сохранить" action = "# {ngbProfileAction.save}" />

1 Ответ

0 голосов
/ 22 июня 2011

Вы пытались добавить ajaxSingle = "true" в a: support?

Также с флажками я обычно использую событие "onchange"

НТН

...