繁体   English   中英

在Spring Form验证中未显示给定的错误消息

[英]Given error message is not displayed in Spring Form validation

我要验证我的表单字段。 我遵循了本教程 我只想显示我给定的错误消息(无需使用MessageResource,而是在pojo中使用硬编码的消息)。 我使用了Hibernate和spring验证,如上面使用的教程所示。 这是我的pojo,用作带有验证批注的model属性。

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>

这是我的控制器:

    @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";

在我的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>

出现字段错误时,页面仅显示默认错误,该错误may not be empty 如何设置给定的错误消息,而不是默认错误? 任何人都可以在我的实现中看到任何错误吗?

您可以尝试一下,看看是否可行:

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

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

根据您当前的代码,仅当username为null时,您将获得的username cannot be empty为空。 将其更改为@NotEmpty 而且,只有电子邮件格式不正确时,您才会收到e mail cannot be empty 如果电子邮件为空,则将打印默认消息,因为您尚未将任何消息附加到电子邮件属性的@NotEmpty @Sanjay的建议将解决此问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM