1

本当の質問:最初のページ読み込み時にすべてのコンポーネントの特定の属性をクリアする方法はありますか?

背景情報:

私のアプリケーションには、サービスレイヤーと通信するJSF 2.0フロントエンドレイヤーがあります(サービスレイヤーは、マネージドBeanに注入されるSpring Beanで構成されています)。

サービスレイヤーは独自の検証を行います。フロントエンドレイヤーでも、独自のバリデータークラスを使用して同じ検証を行い、コードの重複を回避しようとします。これらのバリデータークラスはJSFバリデーターではなく、単なるPOJOです。

アクションの検証のみを行っているため、actionメソッドで検証を実行し、有効な場合にのみサービスレイヤーに呼び出します。

検証を行うときは、リフレクションを使用してUIComponentsにstyleClassとtitleを設定します(したがって、UIComponentにsetStyleClass(:String)またはsetTitle(:String)メソッドがある場合は、それらを使用します)。

これはうまく機能し、検証エラーでは、カーソルを合わせるとエラーメッセージを含むポップアップが表示されたスタイルの良いテキストボックスが表示されます。ただし、コンポーネントはSession Scoped Managed Beanにバインドされているため、これらの属性は固定されているようです。そのため、別の場所に移動して同じページに戻っても、styleClassとtitleはエラー状態のままです。

最初のページ読み込みごとにstyleClass属性とtitle属性をクリアする方法はありますか?

ありがとう、

ジェームズ

PS JSF 1.2で以前に発生したいくつかの問題とその検証方法のために、アクションメソッドを使用して検証していますが、理由を思い出せません...そのため、アクションメソッドを使用して検証しています。

4

1 に答える 1

0

わかりました。PhaseListenerを使用する必要があります。BalusCによるこのブログエントリこの他のブログエントリを参照してください。これは、私がすでに行っていることを行うためのはるかに優れた方法です。リフレクションを使用してstyleClassを手動で設定します。これにより、すべてのコンポーネントにメッセージとハイライトが表示されます。それら...私は同じことをするつもりですが、代わりに属性を追加することは可能だと思います、まだそれを試していません。

于 2010-03-18T06:59:38.160 に答える