【问题标题】:Spring Web Flow Model Validation won't work properlySpring Web Flow 模型验证无法正常工作
【发布时间】:2013-06-20 20:29:31
【问题描述】:

我目前正在开发一个 Web 应用程序,该应用程序将 Spring Web Flow 用于某些表单。我想使用spring驱动的自动验证,所以我有

  • 在我的 Spring Web 流配置文件 (Class LocalValidatorFactoryBean) 中实例化了一个“验证器”bean。
  • 在我的模型中创建了一个带有签名 validate{VieStateId}(ValidationContext context) 的方法(它与作为模型的流配置中的视图状态相关联)。
  • 使用 spring:bind 来自 spring 标记库的标记来显示错误消息(如果出现)。

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

我的模型类中的验证方法。

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

【问题讨论】:

  • 如果在注册错误的路径与 form:errors 标签要求的内容之间存在一些不匹配,请尝试指定&lt;form:errors path="*" /&gt;,这将抽出与任何相关的任何错误字段(但可能有助于了解问题所在)。
  • 当我使用 * 它不会显示任何错误文本。我尝试使用新的 MessageBuilder().error().source("title").defaultText("There was an error").build(),它也不起作用
  • ${status.error} 引用的测试是什么?该变量在哪里设置?

标签: java spring jsp validation spring-webflow


【解决方案1】:

“EnterMovieDetails”真的是您的某个视图的 ID 吗? (如果你能发布你的 WebFlow 配置文件,那会很有帮助)。

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

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

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

希望有帮助!

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-22
  • 2018-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多