我目前正在开发一个 Web 应用程序,该应用程序将 Spring Web Flow 用于某些表单。我想使用由spring驱动的自动验证,所以我有
- 在我的 Spring Web 流配置文件(类 LocalValidatorFactoryBean)中实例化了一个“验证器”bean。
- 在我的模型中创建了一个带有签名 validate{VieStateId}(ValidationContext context) 的方法(它作为模型与流配置中的视图状态相关联)。
- 使用 spring:bind 来自 spring 标记库的标记来显示错误消息(如果出现)。
到目前为止,当 Validator 关联时,我的 web 流视图页面不会走得更远,所以我可以看到它会转到我的 validate 方法。问题是我无法显示我的错误消息。在我的绑定标签中测试 ${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>
我的问题是我的验证似乎正在工作,因为当我应用此验证方法时,我无法转到流程中的下一个视图,尽管我的绑定似乎根本找不到任何错误。
所以我希望任何人都可以帮助我解决这个问题,因为我已经尝试在网上搜索答案,但似乎没有任何帮助。您可以在我的 GitHub 帐户上查看我的项目的完整源代码 - https://github.com/martin-rohwedder/movstream