java - Spring 表单验证中不显示给定的错误消息

标签 java spring hibernate validation spring-mvc

我想验证我的表单字段。我关注了this tutorial 。我只想显示给定的错误消息(不需要使用 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>

这是我的 Controller :

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

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

最佳答案

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

关于java - Spring 表单验证中不显示给定的错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32798830/

相关文章:

java - 来自 Parse 数据的带有 ListView 的 fragment 中的 RatingBar

java - 用于 ElasticSearch 的 Spring Boot Micrometer 与 APM Java 代理

java - Spring MVC + 安全性。字符编码过滤器不起作用

java - 带有 BindingResult 的 Spring 4 @Validation 注释不起作用

java - 传递给持久化的 Hibernate 分离实体

java - 将 PDF 转换为 PNG (tess4j) - 本地工作正常,但在服务器 JBoss 中不工作

java - 此异常的可能原因是什么?

用于基于时钟的仿真的 Java 多线程

java - Hibernate错误org.hibernate.exception.SQLGrammarException : Table . ..不存在

java - 使用 hibernate 和 JPA 的示例项目