У меня есть простая форма, где вы можете ввести String
. При отправке формы пользователь перенаправляется на другую страницу, которая повторяет ввод пользователя. На первой странице используется бин RequestScoped
, тогда как на второй странице используется бин ViewScoped
.
Первая страница:
<h:form>
Type a String: <h:inputText value="#{requestScopedBean.property}"></h:inputText>
<h:commandButton value="To View" action="#{requestScopedBean.toViewScopedBean}">
<f:setPropertyActionListener target="#{viewScopedBean.property}" value="#{requestScopedBean.property}" />
<f:ajax execute="@form" />
</h:commandButton>
</h:form>
Вторая страница:
This is the property passed by the requestScoped bean: <h:outputText value="#{viewScopedBean.property}"></h:outputText><br/>
This is the property created in the PostConstruct: <h:outputText value="#{viewScopedBean.otherProperty}"></h:outputText>
Я понимаю, почему это не работает. Когда форма отправлена, viewScopedBean.property
устанавливается на правильное значение, но затем мы переключаемся на другое представление, поэтому создается новый ViewScopedBean
. Вот почему значение из запроса теряется.
Как передать параметр со страницы 1 на страницу 2 без изменения области действия компонента ?