java - 如何在 Spring 中将错误消息从 bean 传递到表单

标签 java spring tomcat hibernate-validator

我有一个简单的应用程序,我在其中使用验证(效果很好)但是我在将错误消息传回表单时遇到问题。在示例中,我看到它看起来像是“神奇地”传递回表单,而无需手动设置任何属性或任何内容。

这是我的 Controller 代码:

@RequestMapping(value = "/createMember", method = RequestMethod.GET)
public ModelAndView showContacts() {

    return new ModelAndView("createMember", "command", new Member());
}

@RequestMapping(value = "/createMember", method = RequestMethod.POST)
public ModelAndView addContact(@ModelAttribute("member")
                        @Valid Member member, BindingResult result) {

    if(result.hasErrors()) {
        return new ModelAndView("createMember", "command", member);
    }     
    mba.addMember(member);         
    return getPages();
}   

这是我的 createMember.jsp :

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>

<html>
<head>

<script src="<c:url value="/resources/core/jquery.1.10.2.min.js" />"></script>
<script src="<c:url value="/resources/core/jquery.autocomplete.min.js" />"></script>
<link href="<c:url value="/resources/core/main.css" />" rel="stylesheet">

</head>
<body>
<form:form method="post" action="createMember.html">

    <table>
    <tr>
        <td><form:label path="firstName">First Name</form:label></td>
        <td><form:input path="firstName" value="${member.firstName}" /></td> 
        <form:errors path="firstName" cssclass="error"></form:errors>
    </tr>    
    <tr>
        <td><form:label path="lastName">Last Name</form:label></td>
        <td><form:input path="lastName" value="${member.lastName}" /></td>
        <form:errors path="lastName" cssclass="error"></form:errors>
    </tr>
    <tr>
        <td><form:label path="email1">Email</form:label></td>
        <td><form:input value="${member.email1}" path="email1" /></td>
        <form:errors path="email1" cssclass="error"></form:errors>
    </tr>

    <tr>
        <td colspan="2">
            <input type="submit" value="Add Contact"/>
        </td>
    </tr>
</table>  

</form:form>

<a href="${pageContext.servletContext.contextPath}"> Back to main page </a> 

</body>
</html>

我正在使用 Spring 3.2.2、Tomcat 7、hibernate-validator

验证类:

import javax.validation.constraints.Size;
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotEmpty;
public class Member {

    private int memberID;
    private int gender;

    @Size(min=2, max=30)
    private String firstName;

    @Size(min=2, max=30)
    private String lastName;

    @NotEmpty @Email
    private String email1;

    //...getters and setters here
}

最佳答案

在 Controller 类中尝试使用 @ModelAttribute("command") 而不是 @ModelAttribute("member")

关于java - 如何在 Spring 中将错误消息从 bean 传递到表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22282620/

相关文章:

java - Tooltwist Controller 连接由对等方重置

java - 扩展程序参数中的通配符

java - 如何从 HttpURLConnection 创建 ResponseEntity?

java - 当配置文件不活动时包括 bean 定义

spring - 通过过滤器向请求添加自定义 header

java - 部署 war 在 docker 中抛出类未找到异常

java - 无法部署web项目到myeclipse+tomcat

java - jax-ws webservice 中的泛型类会发生什么变化?

java - spring boot多个模块如何继承application.properties

java - 我无法运行一个非常简单的 maven java web 应用程序