【发布时间】:2011-06-26 06:22:34
【问题描述】:
我在寻找如何在 Spring 3 中进行验证时遇到了一些问题。 到目前为止,我拥有的是这个 Java Bean....
public class User {
@NotEmpty
@Size(min=2, max=40)
private String name="";
@Email
private String email="";
public String getName(){
return name;
}
public String getEmail(){
return email;
}
public void setName(String name){
this.name=name;
}
public void setEmail(String email){
this.email=email;
}
}
这是链接到包含表单的页面的方法:
@RequestMapping(value="/form", method=RequestMethod.GET)
public String form(Model model){
model.addAttribute("user",new User());
return "form";
}
这是我的控制器中的方法,它“应该”验证
@RequestMapping(value="/displayUser",method=RequestMethod.POST)
public String displayUser(Model model,@Valid User user,BindingResult result){
if(result.hasErrors()){
return "form";
}
userList.add(user);
model.addAttribute("user",user);
return "displayUser";
}
@Validate 注释应该进行验证,但在我的情况下它没有。
你发现我的代码有问题吗?
顺便说一句,这是我的表格“一切都很简单,这只是为了测试目的
<f:form method="post" action="displayUser" commandName="user">
<table align="center" border="1">
<tr>
<td>Your details</td>
</tr>
<tr>
<td><f:label path="name">Name:</f:label></td><td><f:input path="name" /></td><f:errors path="name"></f:errors>
</tr>
<tr>
<td><f:label path="email">Email:</f:label></td><td><f:input path="email" /></td><f:errors path="name"></f:errors>
</tr>
<tr>
<td><input type="submit" value="register" /></td>
</tr>
</table>
</f:form>
有什么建议吗? (我使用 java 5 并且 javax.validation.Validator 不可用)
【问题讨论】:
-
提示:这与验证无关,但您可以将@ModelAttribute 注解应用于 User 参数,而不是手动将 User 放置在 Model 上,它会自动显示在 Model 上。
-
嗨,威利,问题是我不能在方法签名的同一个参数列表中使用@ModelAttribute("user")User 用户和@Valid User 用户,当然只有一个用户可变其允许
标签: validation forms spring-mvc annotations