2010-12-30 5 views
0

У меня есть 2 tr: selectOneChoice компоненты, каждый из которых имеет свой собственный метод valueChangeListener. Проблема в том, что при изменении значения из раскрывающегося списка 1 он вызовет метод действия 1, который ожидается.2 tr: selectOneChoice ValueChangeListeners вызывает тот же метод действий

Но при изменении значения из раскрывающегося списка 2 он вызовет метод действия 1 и метод действия 2 по порядку, что действительно странно, он не должен вообще вызвать метод действия 1. Хуже всего то, что, даже если я нажимаю на различные кнопки, которые у меня есть на одной странице, они оба одновременно запускают оба метода действий, что очень плохо, и у меня нет идей, как это объяснить.

Я использую MyFaces, Facelets, Trinidad. Большое спасибо.

+0

Покажите нам код флажка. –

ответ

0

valueChangeListener будет вызываться только тогда, когда представленное значение отличается от значения, возвращаемого связанным получателем во время фазы валидации. Одна из наиболее распространенных причин для вашей конкретной проблемы заключается в том, что компонент bean - это область запроса и что начальное значение не сохраняется.

Если вы используете JSF 2.0, вам нужно поместить бит в область view, чтобы он сохранялся в прямых последующих запросах на одном и том же представлении. Но когда вы все еще на 1.x, самое легкое решение состоит в том, чтобы поместить компонент в область сеанса. Однако это также имеет оговорки; когда пользователь открывает одну и ту же страницу в разных вкладках/окнах в том же сеансе браузера, они будут мешать друг другу. Лучше всего использовать Tomahawk's <t:saveState>. Поместите следующую строку где-то на странице с формой с выпадающими:

<t:saveState value="#{bean}" /> 

Таким образом, фасоль будет сохраняться в последующих запросах на то же точку зрения, которая действует как новый JSF 2.0 view область.

+0

Привет, Большое вам спасибо за ваш быстрый ответ. Я понимаю, почему моя ценность меняет методы прослушивателя, но он должен просто вызвать свой собственный метод, и, конечно, не другое значение изменило методы прослушивателя в том же порядке. Это даже худшее, когда я нажимаю на свои кнопки (которые не имеют ничего общего с этими слушателями изменения значений) на одной странице, эти кнопки вызывают как мое значение, так и метод его действия в том же порядке. Я использую JSF 1.x и большое спасибо. –

+0

Как сказано, метод valuechangelistener ** ** ** вызывается, когда представленное значение отличается от начального значения. Вы должны убедиться, что начальное значение не изменяется в последующем запросе. Это не похоже на Javascript или так. – BalusC