Spring MVC <form:errors>标签找不到错误消息</form:errors>

时间:2009-09-01 17:50:44

标签: jsp spring-mvc jsp-tags

我与编写JSP文件的前端开发人员合作。我们有一个正常工作的表单,除了使用Spring的<form:errors/>标记似乎无法显示验证/绑定/处理错误。

我已经确认错误正在设置,显然错误的路径是正确的。据推测,<form:errors path="*" />应该全部呈现它们,无论路径如何,但它都没有显示任何内容。

我是否需要进入标记库源以推断出哪些内容出错?

6 个答案:

答案 0 :(得分:16)

我发现的两件事。

1)确保在表单标记

中指定form-b​​ean / command对象的名称
<form:form method="post" enctype="multipart/form-data" commandName="salesOrder">

2)确保按类名命名form-b​​ean / command对象。在上面的例子中,我的类是com.abc.xyz.SalesOrder。如果我在模型中将其称为“so”或“order”,那么它将不会显示错误。

答案 1 :(得分:14)

简单回答:&lt; form:errors /&gt;必须在&lt; form:form /&gt;范围内元素,以便绑定到模型的“命令”对象。

答案 2 :(得分:3)

问题 - 为什么“form:error path =”xyzProperty“不会在jsp上打印错误?

Anserwer -

  1. BindingResult确实有objectName属性,它在jsp中使用commandName绑定错误列表。

  2. Defualt objectName =您的对象名称。例如,如果类名是MyCareerFB,则objectName = myCareerFB。注意小写的第一个字符,它遵循bean命名约定。

  3. 保持jsp中的commandName值与objectName相同,否则错误不会与对象绑定,jsp将永远不会打印错误消息。

答案 3 :(得分:2)

这只是为了后人的缘故,看到答案已被接受。我自己有相同的症状,但问题是我的形式:form方法属性值区分大小写:即method =“post”不会显示错误,而method =“POST”将正常工作。特别值得注意的是,一切都按预期工作 - 表单视图显示为预期,因为验证失败 EXCEPT 错误在最终JSP中不可见。

此行为将存在于任何扩展AbstractFormController的控制器上,因为

protected boolean isFormSubmission(HttpServletRequest request)

执行“POST”.equals而不是“POST”.equalsIgnoreCase。

答案 4 :(得分:1)

不知道我是否有同样的问题。我的问题是我为@ModelAttribute设置了错误的值。将值设置为&lt; form:form /&gt;的commandName工作良好。

答案 5 :(得分:0)

您可能没有对commandName表单属性使用正确的命名约定。那是我遇到的问题。我有一个名为&#34; XYZTask&#34;我将表单命名为commandName =&#34; xyztask&#34;。除了我没有看到标签报告的错误之外,所有表单映射都有效。我将我的课程重命名为&#34; XyzTask&#34;和命令形式commandName =&#34; xyzTask&#34;,错误开始有效。