Spring Web Flow模型验证无法正常工作

时间:2013-06-24 10:51:04

标签: java spring jsp validation spring-webflow

我目前正在开发一个Web应用程序,它为某些表单使用Spring Web Flow。我想使用由spring驱动的自动验证,因此我有

  • 在我的spring web流配置文件(Class LocalValidatorFactoryBean)中实例化了一个'validator'bean。
  • 在我的模型中创建了一个带有签名validate {VieStateId}(ValidationContext context)的方法(它与流配置中的视图状态相关联,作为模型)。
  • 使用spring:绑定spring标记库中的标记,以显示出现的错误消息。

到目前为止,我的Web流视图页面在Validator关联时不会更进一步,所以我可以看到它将转到我的validate方法。问题是我无法显示我的错误消息。在我的绑定标记内测试$ {status.error}时,它总是返回false。

我的模型类中的My 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

1 个答案:

答案 0 :(得分:0)

'EnterMovieDetails'真的是您的一个视图的ID吗? (如果你可以发布WebFlow配置文件,那会很有帮助。)

如果您使用SWF 2,请查看the documentation的第4.10段。

首先需要确保验证方法的名称中包含视图ID。

此外,我认为您不需要在JSP中使用绑定标记围绕您的错误标记。

希望有所帮助!