springmvc的@Validated注解使用

1. 校驗的錯誤信息, 可以直接在bean屬性上配置, 也可以在properties中配置。

目前創(chuàng)新互聯(lián)已為近1000家的企業(yè)提供了網站建設、域名、網頁空間、網站改版維護、企業(yè)網站設計、邗江網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

2. 將校驗器bean配置到注解驅動上

3. 在需要校驗的pojo前邊添加@Validated,在需要校驗的pojo后邊添加BindingResult bindingResult接收校驗出錯信息

注意:@Validated和BindingResult bindingResult是配對出現,并且形參順序是固定的(一前一后)。

使用validated所需配置:

1. jar包

springmvc的@Validated注解使用

2. application.xml

 <!-- validated 校驗配置start -->
  <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" >
  	<!-- 提供檢驗機制的類: 此處用的而是Hibernate校驗器,但是跟Hibernate沒有關系 -->
  	<property name="providerClass" value="org.hibernate.validator.HibernateValidator" />
  	<!-- 指定校驗的使用的資源文件, 如果不需要額外的錯誤配置文件,就不用配置該屬性,
  	 在配置文件中配置k-v的錯誤提示信息,如果不指定則使用默認配置:classpath下的ValidationMessages.properties -->
  	<property name="validationMessageSource" ref="messoreSources" />
  </bean>
  <!-- 額外錯誤信息文件配置 -->
  <bean id="messoreSources" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<!--   	錯誤信息資源文件, 不需要寫后綴, 默認后綴為.properties -->
  	<property name="basenames">
  		<list>
  			<value>classpath:testErrMessages</value>
  		</list>
  	</property>
<!--   	錯誤信息文件編碼方式 -->
  	<property name="fileEncodings" value="utf-8" />
<!--   	錯誤信息文件緩存時間 -->
  	<property name="cacheSeconds" value="120" />
  </bean>
  <!-- validated 校驗配置end -->
  
  
  <!-- 注解驅動,替換處理器映射器、處理器適配器 -->
  <mvc:annotation-driven validator="validator" />

3. testErrMessage.properties文件

文件結構:

springmvc的@Validated注解使用

文件內容:

springmvc的@Validated注解使用

4. bean的配置, 省略get/set方法

public class ValidBean {
     //直接配置錯誤信息
	@NotBlank(message="用戶名不能為空", groups= {UserGroup1.class})
	private String name;
	
	@Max(value=120, message="年齡最大為120")
	private Integer age;
	
	// 使用配置文件中的錯誤信息, properties中的key: message="{key}"。 {}:占位符
	@NotBlank(message="{validator.user.address}")
	private String address;
}

5. controller

@Controller
@RequestMapping("/test/")
public class ValidTestController {

	/**
	 * 
	 * @desc: 校驗沒有分組的屬性
	 * @auth: zona
	 * 2017年2月19日 下午2:35:42 
	 * @param bean
	 * @param bindingResult
	 * @return
	 */
	@RequestMapping("valid")
	@ResponseBody
	public Result testValid(@Validated ValidBean bean, BindingResult bindingResult) {
		Result result = new Result();
		Map retMap = new HashMap();
		StringBuilder sb = new StringBuilder();
		if(bindingResult.hasErrors()) {
			List<ObjectError> errors = bindingResult.getAllErrors();
			for (ObjectError err : errors) {
				sb.append(err.getDefaultMessage()+"; ");
			}
			result.setErrInfo(sb.toString());
			result.setErrNo(1);
			 return result;
		}
		retMap.put("bean", bean);
		result.success();
		result.setData(retMap);
		return result;
	}
	
	/**
	 * 
	 * @desc: 僅對屬于userGroup組的屬性進行校驗
	 * @auth: zona
	 * 2017年2月19日 下午2:37:03 
	 * @param bean
	 * @param bindingResult
	 * @return
	 */
	@RequestMapping("group/valid")
	@ResponseBody
	public Result testGroupValid(@Validated(value=UserGroup1.class) ValidBean bean, BindingResult bindingResult) {
		Result result = new Result();
		Map retMap = new HashMap();
		StringBuilder sb = new StringBuilder();
		if(bindingResult.hasErrors()) {
			List<ObjectError> errors = bindingResult.getAllErrors();
			for (ObjectError err : errors) {
				sb.append(err.getDefaultMessage()+"; ");
			}
			result.setErrInfo(sb.toString());
			result.setErrNo(1);
			 return result;
		}
		retMap.put("bean", bean);
		result.success();
		result.setData(retMap);
		return result;
	}
}

測試結果:

只校驗沒有分組的屬性

springmvc的@Validated注解使用

校驗UserGroup1組的屬性

springmvc的@Validated注解使用

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

名稱欄目:springmvc的@Validated注解使用
鏈接URL:http://muchs.cn/article34/ijcepe.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供電子商務標簽優(yōu)化、網站建設手機網站建設、、服務器托管

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網站建設