Почему мой f: ajax не работает с h: selectOneMenu? - PullRequest
0 голосов
/ 13 октября 2011

Используя JSF 2.0, Glassfish 3.2, Primefaces 2.2.1

У меня есть страница с несколькими составными компонентами.В одном из этих компонентов у меня есть h: selectOneMenu.Я пытаюсь добавить f: ajax для вызова метода при выборе нового значения.

Вот как выглядит компонент h: selectOneMenu на странице:

<h:selectOneMenu id="selectRmDD" styleClass="editSelectRmDD" value="#{scheduleEditSessionBean.selectedRoom}" >
    <f:selectItems id="roomList" value="#{scheduleEditSessionBean.roomList}"/>
    <f:ajax listener="#{scheduleEditSessionBean.selectRmDD_processValueChange}" event="valueChange" render="@form" />
 </h:selectOneMenu>

Когда явыберите новый элемент из h: selectOneMenu, вызывается функция слушателя, но значение в selectedRoom равно нулю.Я также рассмотрел это в отладчике, и даже значение submitValue для компонента в AjaxBehaviorEvent также является нулевым.Вот метод, который вызывается при выборе нового значения и определение selectedRoom:

 public void selectRmDD_processValueChange( AjaxBehaviorEvent ae) {
    String s = getSelectedRoom();
    System.out.println( "Selected room = "+s );
    if( s != null )applyRoomBtn_action();
 }

private String selectedRoom = "1";
public String getSelectedRoom() { return this.selectedRoom; }
public void setSelectedRoom(String s) { this.selectedRoom = s; }

Есть идеи, почему значение не заполняется?

Спасибо.

1 Ответ

1 голос
/ 13 октября 2011

Это произойдет, когда SelectItem из roomList имеет null или пустую строку в качестве значения в точке обработки отправленной формы. Никаких других причин не приходит на ум, можно ожидать Converter для String.class, который не выполняет свою работу должным образом, но это должно было повлиять на все входные данные, которые связаны со свойством String.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...