springmvc之数据类型转换

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

 

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

 

/**
 *自定义Sring转PhoneNumberModel的类型转换器
*/
public class StringToPhoneNumberConverter implements Converter<String, PhoneNumberModel> {  
    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中注册自定义的转换器:

<!--注册自定义转换器-->
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
	<property name="converters">
		<set>
			<bean class="com.mycompany.myapp.converter.StringToPhoneNumberConverter"/>
		</set>
	</property>
</bean>

<!--注册conversionService-->
<mvc:annotation-driven conversion-service="conversionService"/>

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值