Spring Validation Using Annotation

Spring Validation Using Annotation

在这个例子中你会学到用spring annotation 验证。当你用注解的controller类时。validate()方法不会自动调用。

当表单提交的时候onSubmit()方法会被调用.这里你需要首先调用UserValidator 的validate()方法,然后用hasErrors()

方法检查是否有错。如果有错,转发user到user注册表单并显示错误信息.如果没有错,显示是success界面.
下面是UserController类


01. package com.vaannila.web;
02.  
03. import org.springframework.beans.factory.annotation.Autowired;
04. import org.springframework.stereotype.Controller;
05. import org.springframework.ui.ModelMap;
06. import org.springframework.validation.BindingResult;
07. import org.springframework.web.bind.annotation.ModelAttribute;
08. import org.springframework.web.bind.annotation.RequestMapping;
09. import org.springframework.web.bind.annotation.RequestMethod;
10. import org.springframework.web.bind.annotation.SessionAttributes;
11.  
12. import com.vaannila.domain.User;
13. import com.vaannila.service.UserService;
14. import com.vaannila.validator.UserValidator;
15.  
16. @Controller
17. @RequestMapping("/userRegistration.htm")
18. @SessionAttributes("user")
19. public class UserController {
20.  
21. private UserService userService;
22. private UserValidator userValidator;
23.  
24. @Autowired
25. public UserController(UserService userService, UserValidator userValidator) {
26. this.userService = userService;
27. this.userValidator = userValidator;
28. }
29.  
30. @RequestMapping(method = RequestMethod.GET)
31. public String showUserForm(ModelMap model) {
32. User user = new User();
33. model.addAttribute("user", user);
34. return "userForm";
35. }
36.  
37. @RequestMapping(method = RequestMethod.POST)
38. public String onSubmit(@ModelAttribute("user") User user,
39. BindingResult result) {
40. userValidator.validate(user, result);
41. if (result.hasErrors()) {
42. return "userForm";
43. } else {
44. userService.add(user);
45. return "redirect:userSuccess.htm";
46. }
47. }
48.  
49. }

UserService和UserValidator用 @Autowired注解注入,spring bean 配置文件如下:

01. <?xml version="1.0" encoding="UTF-8"?>
02. <beans xmlns="http://www.springframework.org/schema/beans"
03. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
04. xmlns:p="http://www.springframework.org/schema/p"
05. xmlns:context="http://www.springframework.org/schema/context"
06. xsi:schemaLocation="http://www.springframework.org/schema/beans
07. http://www.springframework.org/schema/beans/spring-beans.xsd
08. http://www.springframework.org/schema/context
09. http://www.springframework.org/schema/context/spring-context.xsd">
10.  
11. <bean id="viewResolver" class="org.springframework.web.servlet.view. InternalResourceViewResolver" p:prefix="/WEB-INF/jsp/"p:suffix=".jsp" />
12.  
13. <bean id="messageSource" class="org.springframework.context.support. ResourceBundleMessageSource" p:basename="messages" />
14.  
15. <context:component-scan base-package="com.vaannila.web" />
16.  
17. <bean id="userService" class="com.vaannila.service.UserServiceImpl" />
18.  
19. <bean id="userValidator" class="com.vaannila.validator.UserValidator"/>
20.  
21. </beans>

你可能感兴趣的:(Spring Validation Using Annotation)