Состояние компонента JSF для <h: selectOneMenu> не изменилось для обновления страницы - PullRequest
0 голосов
/ 30 декабря 2011

Я хотел бы, чтобы мои выпадающие окна компонентов JSF инициализировались для каждого обновления страницы. Я уже знаю, что JSF поддерживает предыдущее состояние, но есть ли способ, которым я могу повторно инициализировать компонент <h:selectOneMenu> при каждом обновлении страницы. Мой бэк-компонент является SessionScoped, и я не могу его изменить, так как я использую тег <f:ajax> для запуска метода базового компонента для каждого события onChange этого выпадающего списка. Пожалуйста, помогите мне решить эту проблему.

Ответы [ 2 ]

1 голос
/ 30 декабря 2011

Думаю, эта статья может решить вашу проблему.Вам просто нужно сбросить свойство, которое привязано к этому <h:selectOneMenu>, прежде чем отображать представление.

0 голосов
/ 30 декабря 2011

, поскольку я использую тег <f:ajax> для запуска метода вспомогательного компонента на каждом событии onChange этого выпадающего списка

Для других причин именно этой причинойобласть видимости была изобретена.Вместо этого поместите bean-компонент в область видимости.

@ManagedBean
@ViewScoped
public class Bean {
    // ...
}

Каждое окно / вкладка браузера получит свой собственный bean-объект области видимости, и каждое обновление страницы будет создавать его заново.Это также немедленно исправит потенциальную серьезную проблему, вызванную неинтуитивным поведением страницы, когда у пользователя одна и та же страница открыта в разных окнах / вкладках браузера в одном и том же сеансе, пока вы используете сессионный компонент.

См.также:

...