springmvc之数据类型转换

阅读更多

 一、springmvc集成数据转换框架:

 

1、自定义类型转换器,可根据需求实现Converter、GenericConverter、ConverterFactory之一皆可。如String-->PhoneNumber:

 

/**
 *自定义Sring转PhoneNumberModel的类型转换器
*/
public class StringToPhoneNumberConverter implements Converter {  
    Pattern pattern = Pattern.compile("^(\\d{3,4})-(\\d{7,8})$");  
    @Override  
    public PhoneNumberModel convert(String source) {          
        if(!StringUtils.hasLength(source)) {  
            //①如果source为空 返回null  
            return null;  
        }  
        Matcher matcher = pattern.matcher(source);  
        if(matcher.matches()) {  
            //②如果匹配 进行转换  
            PhoneNumberModel phoneNumber = new PhoneNumberModel();  
            phoneNumber.setAreaCode(matcher.group(1));  
            phoneNumber.setPhoneNumber(matcher.group(2));  
            return phoneNumber;  
        } else {  
            //③如果不匹配 转换失败  
            throw new IllegalArgumentException(String.format("类型转换失败,需要格式[010-12345678],但格式是[%s]", source));  
        }  
    }  
}

 

/*
 * 座机电话数据模型
 */
public class PhoneNumberModel {
    private String areaCode;   //区号
    private String phoneNumber;  //电话号码

    public String getAreaCode() {
        return areaCode;
    }

    public void setAreaCode(String areaCode) {
        this.areaCode = areaCode;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }
}

 

2、在springmvc-servlet.xml中注册自定义的转换器:



	
		
			
		
	



 

3、验证转换器:

@Controller
public class ConverterController {

    @RequestMapping("/converter/hello")
    @ResponseBody
    public Object converter(@ModelAttribute("phone") PhoneNumberModel phone) {
        return phone;
    }
}

   输入URL验证:http://localhost/converter/hello?phone=012-12345678

 

二、引用:

开涛的博客:http://jinnianshilongnian.iteye.com/blog/1723270

你可能感兴趣的:(springmvc之数据类型转换)