У меня есть карта (целое число, список), которую я хочу заполнить со страницы JSF. Я использую только JSF, без Primefaces или чего-то подобного.
На моей странице JSF есть selectOneMenu, в котором отображаются все ключи моей карты, и selectManyBox для выбора значений для каждого ключа.
Я хочу иметь возможность сохранять каждое состояние перед отправкой всей карты.
Смотрите мой боб:
@ManagedBean(name="myBean")
@SessionScoped
public class MyBean implements Serializable {
(...)
public void refresh(ValueChangeEvent e)
{
if (idRole==-1){ //to check if its just the first selection
setKey((int)e.getNewValue());
}
else{
myObject.getMap().put(key,listOfValuesSelected); //put current manycheckbox values in last selected key
setKey((int)e.getNewValue()); //get new key
listOfValuesSelected=MyObject.getMap().get(Key); //refresh the
//selectManyCheckbox for the newly selected key
}
}
Моя JSF-страница
<h:selectOneMenu id="idRole" value="#{myBean.key}" onchange="submit()" valueChangeListener="#{myBean.refresh}" render="checkbox"> >
<f:selectItem itemLabel="" itemValue="" />
<f:selectItems value="#{myBean.listKeys}" />
</h:selectOneMenu>
<fieldset id="checkbox">
<h:selectManyCheckbox value="#{myBean.listOfValuesSelected}">
<f:selectItems value="#{myBean.listeOfValues}" var="n"
itemLabel="#{n.title}" itemValue="#{n.key}"/>
</h:selectManyCheckbox>
</fieldset>
Мой реальный код немного беспорядок, я немного изменил его, чтобы он соответствовал потребностям моего вопроса, но я могу дать вам настоящий код, если это необходимо.
Моя проблема в том, что selectmanycheckbox вообще не «реагирует». Я вижу, что listOfValuesSelected изменяется, когда я нахожусь в режиме отладки.