2011-06-13 156 views
2

我有一個使用jsr-303進行驗證的bean,但BIndingResult不返回錯誤。每次返回到成功視圖時間Spring MVC 3驗證不起作用

我Bean是

public class User 
{ 

    //@NotNull 
    private int userId; 


    @NotNull 
    @Size(min=3,max=100) 
    private String userName; 

    @NotNull 
    @Size(max=60) 
    private String userFullName; 
} 

我控制器

@RequestMapping(value="/user") 
@Controller 
public class UserController{ 

    @RequestMapping(value="/create",method=RequestMethod.GET) 
    public String createUserForm(Map model) 
    { 
     model.put("user",new User()); 
     return "createUserForm"; 
    } 
    @RequestMapping(value="/create",method=RequestMethod.POST) 
    public String createUser (@Valid @ModelAttribute("user") User user,BindingResult result,Map model) 
    { 
     if(result.hasErrors()) 
     { 
      return "createRmsUserForm"; 
     } 
     else 
     { 
      model.put("User",user); 
      return "redirect:/home"; 

     } 
    } 
} 

回答

6
  • 你需要在你的classpath中javax.validation提供商(例如休眠,驗證-4.x.jar)
  • 您需要在dispatcher-servlet.xml中啓用它。 <mvc:annotation-driven />是最簡單的方法。
+0

我已經嘗試添加hibernate-validator-4.0.0.Beta1.jar,並且在servlet-context.xml中也添加了。但沒有任何變化:( – 2011-06-13 11:28:56

+0

顯示我的調度程序servlet xml。此外,hibernate驗證程序不是很長時間的beta版本 - 抓取更新的版本。 – Bozho 2011-06-13 11:30:14

+0

2011-06-13 11:36:28

2

如果你使用maven

<dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>3.0.6.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-validator</artifactId> 
     <version>4.2.0.Final</version> 
    </dependency> 
1

爲什麼你展示另一個網頁時出現的錯誤?嘗試將用戶返回到同一頁面:在您的案例中,createUserForm而不是createRmsUserForm