1

基本的な CRUD ビュー スコープの Bean があります。セッター メソッド内で、データ固有の検証を実行しています。これにより、セッターのいずれかでエラーが発生した場合に、各セッターの詳細なエラー メッセージが作成されます。

これは問題なく動作しますが、リクエストごとにこのエラー メッセージを空にしたいのですが、その方法がわかりません。 preRenderViewこのエラーメッセージもレンダリングする必要があるため、カットしません。のようなものpostRenderViewが理想的です。

4

1 に答える 1

3

セッターメソッドで検証を実行したり、バッキングBeanに検証メッセージを保存したりしないでください。問題全体は、設計が不適切であり、JSFが提供する検証機能を利用していないことが原因です。

完全に回避するのではなく、JSFが提供する検証機能を利用するだけで、これまでに説明したすべての問題が解消されます。required="true"入力コンポーネントでvalidator="javax.faces.XxxValidator、、、<f:validateXxx>タグなどのJSF組み込みバリデーターのいくつかを使用できます。インターフェイスを実装し、またはValidatorで使用する一意のバリデーターIDを指定することで、カスタムバリデーターを作成できます。validator="myValidator"<f:validator validatorId="myValidator">

JSF標準検証を使用する場合、検証エラーは、コンポーネントに関連付けられて表示される要求スコープ内のValidatorExceptionaとしてスローされます。このようにして、メッセージは後続のリクエストで「自動的に」消えます。FacesMessage<h:message>

非常に基本的なキックオフの例を次に示します。

<h:form>
    <h:inputText id="foo" required="true" requiredMessage="Enter this!" />
    <h:message for="foo" />
    <h:commandButton value="Submit" />
</h:form>

参照:

于 2012-07-30T17:14:27.373 に答える