Метод ValueChangeListener не вызван в моем h: selectOneRadio - PullRequest
0 голосов
/ 28 апреля 2011

Меня немного смущает мой список радиокнопок в JSF и то, как он реагирует на вещи, и я не нашел большой помощи в Интернете. Ниже приводится объявление моего списка переключателей и метода, который следует вызывать в случае изменения значения переключателя:

<h:selectOneRadio value="#{AddExpense.selectedTypeExp}" layout="pageDirection" 
                              valueChangeListener="#{AddExpense.changed}">
    <f:selectItems value="#{AddExpense.typeExpList}"/>
    <a:support event="onclick" action="#{AddExpense.typeExpChanged}" immediate="true"/>
</h:selectOneRadio>

Когда я выбираю другое значение, вызывается только typeExpChanged, но метод AddExpense.changed не вызывается. Я думаю, что здесь что-то путает, не знаю, как должен реагировать changeListener ... Ниже приведен мой очень простой метод тестирования, который должен называться:

public void changed(ValueChangeEvent event){
        System.out.println("In changed event method: "+event.getNewValue());
}

Должен ли я что-то изменить в <a:support>?

Причина, по которой у меня есть и event, и valueChangeListener, заключается в том, что я хотел проверить, что реагирует на изменение выбора. Мне просто нужно вызвать метод с параметром, который сообщает мне выбранное значение, чтобы я мог загрузить что-то еще. Заранее спасибо!

1 Ответ

1 голос
/ 28 апреля 2011

valueChangeListener не является прослушивателем событий на стороне клиента. Это слушатель событий на стороне сервера. Он не генерирует ни одной строки кода HTML / JS / Ajax и запускается самой JSF при отправке формы на сервер, и отправленное значение отличается от исходного значения модели.

Просто продолжайте использовать Ajax4jsf <a4j:support>, это прекрасно для ваших конкретных функциональных требований.

...