Spring MVC-自定义数据类型转换解决方案
来源:互联网 发布:手机魔术拍照软件 编辑:程序博客网 时间:2024/06/11 03:05
通过一个示例来说明,实现自定义String----->PhoneNumberModel的转换器
1.定义数据转换器类,StringToPhoneNumberConverter实现接口Converter
public class StringToPhoneNumberConverter implements Converter<String, PhoneNumberModel> {Pattern pattern = Pattern.compile("^(\\d{3,4})-(\\d{7,8})$");public PhoneNumberModel convert(String source) {if(!StringUtils.hasLength(source)) {//①如果source为空返回nullreturn 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));}} }
2.测试用的PhoneNumberModel
package com.cubead.demo.model;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;}}
3.集成到SpringMVC中
注册ConversionService实现和自定义的类型转换器
<bean id="conversionService"class="org.springframework.format.support.FormattingConversionServiceFactoryBean"><property name="converters"><list><bean class="cn.javass.springmvc.convert.StringToPhoneNumberConverter"/></list></property></bean>
使用的<mvc:annotation-drive>的方式,直接在<mvc:annotation-drive>里面配置conversion-service属性即可:
<mvc:annotation-drivenconversion-service="conversionService">
4.测试代码
URL: http://localhost:8080/spring-mvc/convert?phonenum=010-12345678
package com.cubead.demo.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.servlet.ModelAndView;import com.cubead.demo.model.PhoneNumberModel;@Controllerpublic class ConvertController {@RequestMapping(value = "/convert")public ModelAndView convertStr2PhNum(@RequestParam(value = "phonenum") PhoneNumberModel phonenum) {ModelAndView mv = new ModelAndView();// 添加模型数据可以是任意的POJO对象mv.addObject("message", "地区:" + phonenum.getAreaCode());mv.addObject("msg", "号码:" + phonenum.getPhoneNumber());// 设置逻辑视图名,视图解析器会根据该名字解析到具体的视图页面mv.setViewName("convert");return mv;}}
5.返回页面显示
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>hello world</title></head><body>${message}<br>${msg}</body></html>
0 0
- Spring MVC-自定义数据类型转换解决方案
- Spring MVC学习(七)-------SpringMVC数据类型转换
- Spring MVC学习(七)-------SpringMVC数据类型转换
- spring mvc学习心得(一)数据类型转换
- Spring MVC-自定义拦截器解决方案
- Spring MVC JSON自定义类型转换
- Spring MVC JSON自定义类型转换
- Spring MVC JSON自定义类型转换
- JAVA Spring web mvc 学习 之 6:数据类型转换
- spring mvc 使用及json 日期转换解决方案
- spring mvc 使用及json 日期转换解决方案
- spring读取资源文件时自定义数据类型转换---CustomEditorConfigurer
- Spring MVC JSON自定义类型转换(续)
- Spring MVC JSON自定义类型转换(续)
- Spring MVC JSON自定义类型转换(续)
- 自定义数据类型转换Demo
- JAVA Spring web mvc 学习 之 6:数据类型转换 -格式转换
- 【Spring】详解Spring MVC中不同格式的POST请求参数的数据类型转换过程
- Ubuntu14.04下maven建立java项目
- ADSTATS.SQL HANG AT DBMS_STATS.GATHER_SCHEMA_STATS. (文档 ID 466294.1)
- C++对C的加强 总结(5)
- 【存储管理】系统调用mmap()
- iPhone-获取网络数据或者路径的文件名以及后缀
- Spring MVC-自定义数据类型转换解决方案
- SVN的文件夹链接太强大了!(目录链接,目录映射,svn:externals)
- 面试题:求全排列和组合
- HTML中单击Table表头实现排序
- 在myeclipse中加上多行注释
- HDOJ-3065 病毒侵袭持续中
- 2014年5月7号
- rapidjson操作指南
- ORA-01536: 超出表空间 'SYSTEM' 的空间限额