06、类型转换(springmvc)

解决的问题 :

解决网页输入的数据类型不匹配的问题,将数据类型转换

两个接口:

1、Converter接口 : org.springframework.core.convert.converter.Converter
2、Formatter接口 :

首先需要创建一个bean类 作为contorller类的 参数

@Data
public class UserInfoModel {

	private String username;

	private Date birthday;

}

controller类

@Controller(value = "userInfoController")
@RequestMapping(value = "/user-info")
public class UserInfoController {

	private static Log log = LogFactory.getLog(UserInfoController.class);

	public UserInfoController(){

		log.info("正在创建UerInfoController");

	}

	//参考地址:/user-info/save?username=XXX&birthday=2000-1-1
	@RequestMapping(value = "/save")
        // 这里传入一个bean类数据类型,等会访问时赋值
 
	public String save(UserInfoModel userInfoModel, Model model) {

		log.info("-----------------------------------");

		log.info("UerInfoController.save()");

		log.info("userInfo:" + userInfoModel);

		model.addAttribute("userinfo", userInfoModel);

		log.info("-----------------------------------");

		return "user-info";
	}
}

1、Converter接口

 

字符串转换日期的Converter接口

package com.wdzl.converter;


import lombok.Data;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import org.springframework.core.convert.converter.Converter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

@Data                 //String原数据类型,即用户输入,Date转换所得的数据类型
public class StringToDateConverter implements Converter<String, Date> {

	private  static Log log = LogFactory.getLog(StringToDateConverter.class);

	private String pattern;

	//构造方法:无参数的
	public StringToDateConverter() {
		this.pattern = "yyyy-MM-dd";

		log.info("正在创建StringToDateConverter()");

	}

	//构造方法:有参数的
	public StringToDateConverter(String pattern) {
		this.pattern = pattern;
		log.info("正在创建StringToDateConverter(String pattern)");
	}

	@Override
	public Date convert(String source) {

		log.info("StringToDateConverter.convert()");

		log.info("source:" + source);

		//初始化日期格式化器
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);

		Date date = null;
		try {
			//把字符串转换为日期对象
			date = simpleDateFormat.parse(source);
		} catch (ParseException e) {
			e.printStackTrace();
			throw new IllegalArgumentException(source + "不能被转换成Date.");
		}

		log.info("date:" + date);

		return date;
	}

	public static Log getLog() {
		return log;
	}

	public static void setLog(Log log) {
		StringToDateConverter.log = log;
	}

	public String getPattern() {
		return pattern;
	}

	public void setPattern(String pattern) {
		this.pattern = pattern;
	}
}

 还有一部就是配置文件:::

添加一个类型转换器!!!!

 <!-- 类型转换器 -->
    <!-- ==================================================================================================== -->
    <bean id="conversionService"
          class="org.springframework.format.support.FormattingConversionServiceFactoryBean">


        <property name="converters">
            <set>
                <bean class="com.wdzl.converter.StringToDateConverter">
                    <property name="pattern" value="yyyy-MM-dd"></property>
                </bean>

            </set>
        </property>


        <!-- 格式化显示的配置 -->
        <!-- <property name="formatters">
            <set>
                <bean class="com.company.project.formatter.DateFormatter" >
                    <property name="pattern" value="yyyy-MM-dd"></property>
                </bean>
            </set>
        </property>  -->

    </bean>

 

是的! 还需要一个jsp接收:

 

成功案例:

给bean类赋值:原来brithday是Date类型,但是我传进去时String类型

 成功将类型转换成Date

 

 2、Formatter接口 ----------待续

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值