2013-09-18 3 views
2

Я пытаюсь выполнить некоторые действия в ManagedBean на основе состояния флажка.Как получить состояние SelectBooleanCheckbox в Ajax Listener?

Checkbox здесь:

<p:selectBooleanCheckbox id="cb"> 
    <p:ajax listener="#{myBB.checkboxChanged}"/> 
</p:selectBooleanCheckbox> 

Сигнатура метода слушателя заключается в следующем:

public void checkboxChanged(AjaxBehaviorEvent event) 

Метод слушателя называется, как и ожидалось, но я не уверен, как получить состояние флажка (если он выбран) Это ложь все время:

((SelectBooleanCheckbox)event.getSource()).isSelected() 

Нужно ли привязать значение флажка? Я хотел бы избежать этого, потому что флажки генерируются из enum в цикле, и у меня нет никакого логического типа, где его можно связать (модель спроектирована таким образом, что я добавляю/удаляю экземпляры перечисления коллекция, не устанавливая логические свойства)

Я бегу код на Tomcat 6.0.36 с Primefaces 3,5

реализация JSF является Apache 2.1.10 MyFaces

ответ

2

Ваш код работает, как ожидалось для меня на Mojarra 2.2.1 и PrimeFaces 4.0RC1, а также Mojarra 2.0.3 и PrimeFaces 3.5. К сожалению, у меня не было 2.1 удобного. Какую версию PrimeFaces вы используете? Можете ли вы разместить свой полный код?

+0

Я использую frontfaces 3.5 и развертываю на Tomcat 6.0.36. Что работает? Значение isSelected() дает правильное значение? К сожалению ... Я не использую JSF 2.1, как я и думал. – NeplatnyUdaj

+0

isSelected() правильно чередует true/false, когда флажок установлен на мою тестовую среду. Я использую Tomcat 7.0.34. – LucasP

+0

Итак, похоже, что это проблема apache myfaces. – NeplatnyUdaj

2

Лукас был прав, все в порядке. Проблема в том, что я не добавил кнопку в форму.

После добавления метки <h:form> все в порядке.

+1

Затем вы должны принять ответ. – Manuel

+0

Всегда полезно создать пример MCV. В противном случае другие люди предположили бы, что у вас есть форма. – alexander

Смежные вопросы