<!-- 校驗 --> <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="basenames"> <list> <value>classpath:CustomValidationMessages</value> </list> </property> <!-- 資源文件編碼格式 --> <property name="fileEncodings" value="utf-8" /> <!-- 對資源文件內容緩存時間,單位秒 --> <property name="cacheSeconds" value="120" /> </bean>新建校驗信息資源文件CustomValidationMessages.properties校驗器注入到處理器適配器中springmvc.xml
<mvc:annotation-driven conversion-service="conversionService" validator="validator"></mvc:annotation-driven>在pojo中添加校驗規則//檢查名稱在3到5個字符中間 @Size(min = 3, max = 5, message = "{user.name.length}") private String name; // 年齡不能為空 @NotNull(message = "{user.age.isNull}") private Integer age;Controller添加驗證// 需要在校驗的pojo前邊添加@Validated,在需要校驗的pojo后邊添加BindingResult接收校驗輸出錯誤信息 // 注意:@Validated和BindingResult是配對出現,并且形參順序是固定的(一前一后) @RequestMapping("/editUserSubmit") public String editUserSumit(Model model, Integer id, @Validated UserCustom userCustom, BindingResult bindingResult) throws Exception { if (bindingResult.hasErrors()) { List<ObjectError> errors = bindingResult.getAllErrors(); for (ObjectError objectError : errors) { System.out.println(objectError.getDefaultMessage()); } model.addAttribute("errors", errors); // 重定向 return "user/editUser"; } else { usersservice.updateUser(id, userCustom); // 重定向 return "redirect:queryUsers.action"; } }jsp頁面顯示錯誤信息<c:if test="${errors!=null }"> <tr> <td><c:forEach items="${errors }" var="error"> ${error.defaultMessage }<p /> </c:forEach></td> </tr> </c:if>
新聞熱點
疑難解答