私は現在、いくつかのフォームに Spring Web Flow を使用する Web アプリケーションに取り組んでいます。スプリングによる自動検証を使用したいので、
- Spring Web フロー構成ファイル (Class LocalValidatorFactoryBean) で「バリデーター」Bean をインスタンス化しました。
- モデル内に署名 validate{VieStateId}(ValidationContext context) を持つメソッドを作成しました (モデルとしてフロー構成のビューステートに関連付けられています)。
- spring タグ ライブラリの spring:bind タグを使用して、エラー メッセージが表示された場合に表示しました。
これまでのところ、Validator が関連付けられている場合、Web フロー ビュー ページは先に進みません。問題は、エラー メッセージを表示できないことです。bind タグ内で ${status.error} をテストすると、常に false が返されます。
モデル クラス内の Validate メソッド。
public void validateEnterMovieDetails(ValidationContext context) {
if (context.getUserEvent().equals("next")) {
MessageContext messages = context.getMessageContext();
if (this.title.isEmpty() || this.title == null) {
messages.addMessage(new MessageBuilder().error().source("title").code("validation.movie.title.required").build())
}
}
}
私のJSPファイル
<form:form modelAttribute="movie" action="${flowExecutionUrl}">
<spring:bind path="title">
<c:if test="${status.error}">
<form:errors path="title" />
</c:if>
</spring:bind>
</form:form>
私の問題は、この検証メソッドを適用すると、フローの次のビューに移動できないため、検証が機能しているように見えることですが、私のバインドではエラーがまったく見つからないようです。
Webで回答を検索しようとしたが、何も役に立たなかったので、誰かがこの問題を解決するのを手伝ってくれることを願っています. 私の GitHub アカウント ( https://github.com/martin-rohwedder/movstream)で、私のプロジェクトの完全なソース コードを確認できます。