SpringMVC的自定义类型转换器和格式转换器

类型转换器

默认的类型转换器只需要在controller层用bean

    @RequestMapping("/add1")
    public String add1(Goods goods, Model model) {
        model.addAttribute("goods", goods);
        return "showGoods";
    }

自定义类型转换器
写一个类

public class GoodsConverter implements Converter<String, Goods> {
    @Override
    public Goods convert(String s) {
        String[] info = s.split(",");
        Goods g = new Goods();
        g.setGoodName(info[0]);
        g.setGoodPrice(Double.parseDouble(info[1]));
        g.setGoodNumber(Integer.parseInt(info[2]));
        return g;
    }

image-20220628151626630
controller,使用注解@RequestParam

 @RequestMapping("/add2")
    public String add2(@RequestParam("goodInfo") Goods goods, Model model) {
        model.addAttribute("goods", goods);
        return "showGoods";
    }

image-20220628152243895
xml中配置

 <!--注册自定义类型转化器-->
    <bean id ="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters" >
            <bean class="converter.GoodsConverter"/>
        </property>
    </bean>
    <!--加入springmvc框架-->
    <mvc:annotation-driven conversion-service="conversionService"/>

Formatter

Spring MVC提供几个内置的格式化转换器,具体如下:
NumberFormatter:实现Number与string之间的解析与格式化。
CurrencyFormatter:实现Number与String之间的解析与格式化(带货币符号)。PercentFormatter:实现Number与string之间的解析与格式化(带百分数符号)。DateFormatter:实现Date 与string之间的解析与格式化。

2020/06/30(内置DateEormatter转换器)2020-06-30(需要额外处理)
默认的就正常写即可,在controller层用bean
image-20220628151516535
image-20220628151507198
自定义formatter,实现Formatter接口

public class MyFormatter implements Formatter<Date> {
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    @Override
    public Date parse(String text, Locale locale) throws ParseException {
        System.out.println("string->date"+dateFormat.parse(text));
        System.out.println("date->string"+dateFormat.format(dateFormat.parse(text)));
        return dateFormat.parse(text);
    }

    @Override
    public String print(Date object, Locale locale) {
        return null;
    }
}

Controller不变

image-20220628153250768
xml配置

<!--注册自定义格式化转换器-->
<bean id="formattingService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
    <property name="formatters">
        <list>
            <bean class="converter.MyFormatter"/>
        </list>
    </property>
</bean>
<mvc:annotation-driven conversion-service="formattingService"/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值