String
を入力できるシンプルなフォームがあります。フォームを送信すると、ユーザーはユーザー入力をエコーする別のページにリダイレクトされます。最初のページはRequestScoped
のBeanを使用し、2番目のページはViewScoped
のBeanを使用しています。RequestScopedからViewScoped Beanにパラメータを渡す方法
最初のページ:
<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>
2番目のページ:それは動作しない理由を
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ページ目にどのようにパラメータを渡しますか?
から値を取得することができGETリクエスト(例:mydomain.com?myString =helloWorld)、または文字列がURLパラメータを介して渡すには長すぎると思いますか?または、ページ間で情報を維持するために、その情報をセッションに保存して、2ページ目に戻るとその情報を取り戻すことができます。あなたの文字列がセッションには長すぎると私はイメージを傾けません。 –