Spring Validation Using Annotation在这个例子中你会学到用spring annotation 验证。当你用注解的controller类时。validate()方法不会自动调用。 当表单提交的时候onSubmit()方法会被调用.这里你需要首先调用UserValidator 的validate()方法,然后用hasErrors() 方法检查是否有错。如果有错,转发user到user注册表单并显示错误信息.如果没有错,显示是success界面.
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>
|