1

次のような ah:form コンポーネント内に ap:selectOneMenu コンポーネントを作成しました。

<p:selectOneMenu id="scroll" rendered="#{projectPageBean.rendered}"
    value="#{projectPageBean.selectedInstrument}">
    <f:selectItems value="#{projectPageBean.instruments}"/>
    <p:ajax event="change" listener="#{projectPageBean.valueChanged}" update="test" />
</p:selectOneMenu>

同じフォーム内で、ap:commandButton コンポーネントを定義しました。

<p:commandButton id="test"
    value="View Instrument"
    action="#{projectPageBean.getPage}"
    update="@this,:add-instrument-dialog-form:scrolladd"/>

selecOneMenu からの selectedInstrument に応じて、p:commandButton の action 属性を介したナビゲーションは異なるはずです。

マネージド Bean projectPageBean はリクエスト スコープです。

これは実現可能ですか、それとも別のアプローチを試す必要がありますか?

4

1 に答える 1

0

action属性は、実際のフォーム送信のリクエスト中に評価されます。これは、変更したリクエストとは別のリクエストで発生しており、Bean がリクエスト スコープであるため、失敗します。つまり、Bean は、すべてのプロパティがデフォルトに設定された状態で再構築されます。

この構成を機能させるには、Bean をビュー スコープに配置する必要があります。

@ManagedBean
@ViewScoped
public class ProjectPageBean {}

getPage()または、 がを返すだけの場合は、代わりにString使用<p:button>してください。

<p:button ... outcome="#{projectPageBean.page}" />

このoutcome属性は、HTML 出力のレンダリング中に評価されるため、そのような構成では問題なく機能します。

以下も参照してください。

于 2013-06-26T13:40:04.673 に答える