Java 给定的错误消息未显示在Spring窗体验证中

Java 给定的错误消息未显示在Spring窗体验证中,java,spring,hibernate,validation,spring-mvc,Java,Spring,Hibernate,Validation,Spring Mvc,我想验证我的表单字段。我跟着。我只想显示一条我给定的错误消息(不需要使用MessageResource,而是pojo中的硬编码消息)。我使用Hibernate和spring验证,正如上面的教程所使用的。这是我的pojo,用作带有验证注释的模型属性 import javax.validation.constraints.NotNull; import org.hibernate.validator.constraints.Email; import org.hibernate.validator.

我想验证我的表单字段。我跟着。我只想显示一条我给定的错误消息(不需要使用MessageResource,而是pojo中的硬编码消息)。我使用Hibernate和spring验证,正如上面的教程所使用的。这是我的pojo,用作带有验证注释的模型属性

import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotEmpty;

public class User {

    @NotNull(message="username cannot be empty")
    private String username;
    @NotEmpty @Email(message="e mail cannot be empty")
    private String email;
    (... encapsulated getters and setter..)
这是我的JSP

<form:form action="register" method="post"  commandName="userForm">
            <table border="0">
                <tr>
                    <td colspan="2" align="center"><h2>Spring MVC Form Demo - Registration</h2></td>
                </tr>
                <tr>
                    <td>User Name:</td>
                    <td><form:input path="username" />
                     <form:errors path="username"></form:errors>
                    </td>

                </tr>
                <tr>
                    <td>E-mail:</td>
                    <td><form:input path="email" />
                     <form:errors path="email"></form:errors>
                    </td>
                </tr>
                <tr>
                    <td colspan="2" align="center"><input type="submit" value="Register" /></td>
                </tr>
            </table>
        </form:form>

SpringMVC表单演示-注册
用户名:
电邮:
这是我的控制器:

    @RequestMapping(method = RequestMethod.POST)
    public String processRegistration( @ModelAttribute("userForm") @Valid   User user
                                        ,BindingResult result
                                        ,Map<String, Object> model) {

         if(result.hasErrors()){
                     return "registration";
         }
return "profile";
@RequestMapping(method=RequestMethod.POST)
公共字符串processRegistration(@modeldattribute(“userForm”)@有效用户
,BindingResult结果
,地图模型){
if(result.hasErrors()){
返回“注册”;
}
返回“profile”;
在我的pom.xml中

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>1.1.0.Final</version>
</dependency>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>5.0.1.Final</version>
</dependency>

javax.validation
验证api
1.1.0.1最终版本
org.hibernate
休眠验证器
5.0.1.最终版本

当出现字段错误时,页面仅显示默认错误,
可能不为空。
。我如何设置给定的错误消息而不是默认错误?任何人都可以看到我的实现中有任何错误?

您可以尝试一下,看看它是否有效:

@NotEmpty(message="username cannot be empty")
private String username;

@NotEmpty(message="email cannot be empty")
@Email(message="email not well formed")
private String email;

根据您当前的代码,只有用户名为null时,您才能获得
用户名不能为空
。将其更改为
@NotEmpty
。只有在电子邮件格式不正确时,您才能获得
电子邮件不能为空
。如果电子邮件为空,则会打印默认邮件,因为您尚未将任何邮件附加到
@NotEmpty。@Sanjay的建议将解决此问题