我想验证我的表单字段。我跟着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>
这是我的控制器:
@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
。如何设置给定的错误消息而不是默认错误?任何人都可以在我的实施中看到任何错误?
答案 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;
答案 1 :(得分:1)
根据您当前的代码,只有当username为null时,您才会获得username cannot be empty
。将其更改为@NotEmpty
。只有在电子邮件格式不正确的情况下,您才会获得e mail cannot be empty
。如果电子邮件为空,则会打印默认邮件,因为您尚未将任何邮件附加到@NotEmpty
电子邮件媒体资源。 @ Sanjay的建议将解决这个问题。