JSFページ間で、Beanから別のページにパラメーターを渡そうとしています。私はそれが一般的な質問であることを知っています、実際、私はそれを書き留める前にいくつかのアプローチを試しました。これを行うために、両方のBeanをセッションスコープに配置し、最初のBeanに次を追加しました。
<p:commandButton value="Submit" type="submit"
actionListener="#{sourceBean.save}" action="success">
<f:setPropertyActionListener
target="#{targetBean.foo}" value="#{sourceBean.foo}" />
</p:commandButton>
問題は、これらのBeanをセッションスコープではなくビュースコープに入れたいということです。だから私は私の最初のページを入れようとしました:
<p:commandButton value="Submit" type="submit"
actionListener="#{sourceBean.save}" action="success">
<f:param name="foo" value="#{sourceBean.foo}"/>
</p:commandButton>
そして2ページ目:
<f:metadata>
<f:viewParam id="foo" name="foo" value="#{targetBean.foo}"
/>
</f:metadata>
問題は、渡された文字列がnullであるため、明らかに、Converterからエラーが発生することです。
管理対象Beanの構成に何かが欠けていると思います。何らかの方法でターゲットBeanとソースBeanをリンクする必要がありますか?この時点で、私はこの構成を持っています:
<managed-bean>
<managed-bean-name>targetBean</managed-bean-name>
<managed-bean-class>guiBeans.TargetBean</managed-bean-class>
<managed-bean-scope>view</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>sourceBean</managed-bean-name>
<managed-bean-class>guiBeans.SourceBean</managed-bean-class>
<managed-bean-scope>view</managed-bean-scope>
</managed-bean>
別の質問:私のアプリでは、変換中に使用する値foo.idは、オブジェクトを保存するときにデータベースによって自動的に設定されるため、次のように呼び出します。
actionListener="#{sourceBean.save}"
コンバーターはIDを取得し、それを文字列に変換します(必要に応じてその逆も同様です)。そこで、JSFで最初にactionListenerと呼ばれるのか、パラメータを設定する関数と呼ばれるのかを知りたいと思いました。
これが私がnull文字列を取得する理由でしょうか?どうもありがとう。