先看看幾個關鍵詞 @Valid @Pattern @NotNull @NotBlank @Size BindingResult 這些就是Spring MVC的數據校驗的幾個注解。 那怎么用呢?往下看
1.先在pom.xml文件中加入依賴
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>4.3.0.Final</version> </dependency>
2.寫controller層
@Controller @RequestMapping("/user") public class UserController extends BaseController{ @RequestMapping("/index") public String index() { return "index"; } @RequestMapping("/toAddUser") public String toAddUserPage() { return "addUser"; } /** * form表單添加用戶,並用注解形式校驗 * @Valid 表示 userModel要進行校驗 * BindingResult 表示綁定校驗的錯誤信息返回 * @param userModel * @param bindingResult * @return */ @RequestMapping("/add") public String addUser(@Valid @ModelAttribute("userModel") UserModel userModel, BindingResult bindingResult, Model model) { if (bindingResult.hasErrors()) { FieldError fieldError = bindingResult.getFieldError(); String validMess = fieldError.getDefaultMessage(); model.addAttribute("errors", validMess); return "error"; } System.out.println("用戶姓名:" + userModel.getName()); System.out.println("用戶郵箱:" + userModel.getEmail()); //用重定向防止頁面刷新重復提交 return "redirect: /user/index"; } }
3、看看UserModel.java
public class UserModel { private Integer id; // @NotNull(message = "姓名不能為空") @NotBlank(message = "{username.not.empty}") // @Size(min = 3, max = 10, message = "please input right length") private String name; private Integer age; private String gender; @Pattern(regexp = "^[A-Za-z\\d]+([-_.][A-Za-z\\d]+)*@([A-Za-z\\d]+[-.])+[A-Za-z\\d]{2,4}$", message = "{username.not.empty}") private String email; @NotNull private String phone; setters... getters.... }
4、在spring 的配置文件中添加配置信息 applicationContext.xml
<!--JSR-303 @Valid 國際化支持配置 --> <mvc:annotation-driven validator="validator" conversion-service="conversion-service" /> <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/> <!-- 如果不加默認到 使用classpath下的 ValidationMessages.properties --> <property name="validationMessageSource" ref="messageSource"/> </bean> <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <property name="basename" value="classpath:valid-message-zh" /> <property name="fileEncodings" value="utf-8"/> <property name="cacheSeconds" value="120"/> </bean> <bean id="conversion-service" class="org.springframework.format.support.FormattingConversionServiceFactoryBean" />
5、別忘記配置文件中的 valid-message-zh.properties哦
username.not.empty=\u7528\u6237\u540d\u4e0d\u80fd\u4e3a\u7a7a
參考:
[1] 《Spring實戰》,人民郵電出版社, Craig Walls