0

JSF 2 では、<f:viewParam>タグを使用して URL パラメーターを初期化できます。

例えば:

<f:viewParam id="name" name="name"
            value="#{applicationBean.name}" required="true" />

次に、バッキング Bean でこのパラメータを使用して、.xml を使用していくつかのオブジェクトをロードします<f:event>

例えば:

<f:event type="preRenderView"
            listener="#{applicationBean.preRenderView}" />

preRenderView()メソッドは、applicationBeanいくつかのブール変数buttonEnabledを true または falseに設定します

メイン ページでこの変数を使用してボタンを有効/無効にすると、機能しません (たとえば、常に false と評価されます)。

<h:commandButton disabled="#{!applicationBean.buttonEnabled}">

助言がありますか?

4

1 に答える 1

1

タイミングの問題があります。アクション イベントは、要求値の適用フェーズ中にキューに入れられます。改ざんされたリクエストに対する保護の一環として、その時点でdisabled(and ) 属性も評価します。renderedただし、実際にはレンダリング応答フェーズの直前にのみ設定されるため、実際には常にデフォルト値に評価されます。これは明らかにfalseです。

代わりにリクエストパラメータベースの初期化ジョブを実行するか@PostConstruct(これ<f:viewParam>は実際には不適切です)、またはdisabled属性に Bean プロパティの代わりにリクエストパラメータ自体をチェックさせる必要があります (Bean プロパティは実際には不適切です)。

于 2015-02-10T14:55:52.640 に答える