SpringMVC的学习8(自定义类型转换器)

自定义类型转换器需要实现Converter接口中的方法,通过方法进行类型转换,最后将实现Converter接口的实体类值传入ConversionServiceFactoryBean类中的converters属性中,最后使用mvc:annotation-driven标签启动动态请求

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

(1)实现接口Converter MyConverter类

@Component
public class MyConverter implements Converter<String,User> {

    /**
     *
     * 传进来的是String,转换的是User
     * 可以通过String分隔,然后依次传入User中
     * @param source
     * @return
     */
    public User convert(String source) {
        User user = null;
        if(source != null && !"".equals(source) && source.split("-").length == 3){
            user = new User();
            user.setId(Integer.parseInt(source.split("-")[0]));
            user.setAge(Integer.parseInt(source.split("-")[1]));
            user.setName((source.split("-")[2]));
        }
        return user;
    }
}

(2)xml配置文件:

<mvc:default-servlet-handler></mvc:default-servlet-handler>
    <mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>


<!--添加自定义的类型转换器到ConversionServiceFactoryBean-->
    <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <ref bean="myConverter"></ref>
            </set>
        </property>
    </bean>

(3)请求接收类

@Controller
public class MyConverterController {

    @RequestMapping("/converter")
    public String testConverter(User user, Model model){
        System.out.println(user);
        model.addAttribute(user);
        return "success";
    }

}

(4)jsp请求发送页面

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2022/3/11
  Time: 16:11
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>测试</title>
</head>
<body>
    <%
        request.setAttribute("ctp",request.getContextPath());
    %>

<form method="post" action="${ctp}/converter">
    <input name="user" type="text"/><br>
    <input type="submit" value=提交>
</form>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值