Я пытаюсь сделать простую вещь в 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}" />