【发布时间】:2016-08-09 20:33:53
【问题描述】:
我已经搜索了该论坛的几个教程和答案以尝试解决我的问题:我想使用 spring MVC 在我的表单中显示来自我的 bean 的验证错误。
无论我尝试什么,我都无法让它发挥作用。我没有使用重定向,我的绑定结果直接在模型类之后等等。
这是我目前所拥有的:
登录类:
public class LoginUser implements Serializable {
@NotNull
@Column(name="username", unique=true)
@Size(min=5)
private String username;
@NotNull
@Size(min=5)
private String password;
登录控制器:
@Transactional
@Controller
public class LoginController {
@Autowired
UserDao dao;
@RequestMapping(value = "enter", method = RequestMethod.POST)
public String doLogin(@ModelAttribute("user") @Valid LoginUser user, BindingResult result, HttpSession session) {
if (result.hasErrors()) {
return "login/loginForm";
} else {
if (dao.authenticate(user)) {
session.setAttribute("userLoggedIn", user.getUsername());
return "forward:index";
} else {
return "redirect:login";
}
}
}
登录表格:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script type="text/javascript" src="resources/js/bootstrap.js"></script>
<script type="text/javascript" src="resources/js/jquery-3.1.0.min.js"></script>
<link rel="stylesheet" href="resources/css/bootstrap.css">
<title><spring:message code="title.login" /></title>
</head>
<body>
<spring:message code="login.message.login" />
<form:form action="enter" commandName="loginForm" method="POST">
<spring:message code="username.login" />
<input type="text" name="username" id="username" /><br />
<form:errors path="username" />
<spring:message code="password.login" />
<input type="password" name="password" id="password" /><br /> <input
type="submit" value="<spring:message code='button.login'/>"><br />
<spring:message code="does.not.have.account.login" />
<a href="register"><spring:message code="register.link.login" /></a>
</form:form>
</body>
</html>
哦,我忘了添加 - 我配置了 messages.properties(工作正常,经过测试),消息从那里传来。这是与表单相关的行:
messages_en.Properties
NotEmpty.loginForm.username= Please fill the username field
顺便说一句,可能值得注意的是,我的视图是通过一个复合视图(由 JSP 制成,包括页眉、主页和页脚)安装的,它覆盖了 Sping-MVC 中的常规视图加载。
【问题讨论】:
-
我可以建议我这样做的方式。就我而言,例如,我的用户类
@Column @Pattern (regexp = "^[a-zA-Z_-]{2,30}$", message = "First name shall consist of 2-30 English letters") @NotEmpty (message = "First name is required.") private String firstName;中有这样的字段,jsp 注册页面中有这样的相应代码<label for="firstName" class="col-sm-2 control-label">First name</label> <form:input path="firstName" type="text" class="form-control" placeholder="First Name"/> <form:errors path="firstName" cssStyle="color: #ff0000;"/>
标签: spring validation spring-mvc