【问题标题】:Spring 3 validation method not validatingSpring 3 验证方法未验证
【发布时间】: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


【解决方案1】:

确保添加 javax.validation 的验证 API 和休眠验证器。如果您使用 maven,请在依赖项中添加以下内容:

           <dependency>
                    <groupId>javax.validation</groupId>
                    <artifactId>validation-api</artifactId>
                    <version>1.0.0.GA</version>
            </dependency>


             <dependency>
                    <groupId>org.hibernate</groupId>
                    <artifactId>hibernate-validator</artifactId>
                    <version>4.0.2.GA</version>
            </dependency>

启用在 applicationContext 上驱动的 Spring 注解

<mvc:annotation-driven />

【讨论】:

  • 嗨 gouki,谢谢你的建议,Spring 的注释已经激活,我不使用 Maven 或 Ants,你上面提到的依赖项已经在我项目的类路径中
猜你喜欢
  • 2011-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-24
  • 1970-01-01
  • 1970-01-01
  • 2012-02-08
相关资源
最近更新 更多