SpringMVC中的自定义类型转换器

该篇博客记录的我在学习MyBatis时,学习到InternalResourceViewResolver的一个小知识点。因为此功能的步骤基本就是有靠记忆记住的,所以写这篇供参考

InternalResourceViewResolver的其他功能,第五小点:

(1)Spring自带一些常见的类型转换器:

  例如一些INTEGER(int)类型 ------也可以用String类型接收。[其他一些百度查找哈];

(2)自定义类型的转化器:

  i.编写自定义类型转换器的类(实现Converter接口)

public class MyConverter implements Converter<String, Student> {//<S,T>:source,target

    public Student convert(String source) {//source:2-zs-23
        String[] studentStrArr = source.split("-");
        Student student = new Student();
        student.setId(Integer.parseInt(studentStrArr[0]));
        student.setName(studentStrArr[1]);
        student.setAge(Integer.parseInt(studentStrArr[2]));
        return student;
    }
}
 

如果这段代码出现convert(arg0,arg1),就将源码导入,便可看到参数。如果出现两个Object:public Object convert(Object arg0),则将Converter要转换的泛型参数加进去即可。

ii.配置:将MyConverter加入到SpringMVC中去:

<!-- 1.将 自定义转换器纳入SpringIOC容器  -->
        <bean id="myConverter" class="cn.edu.xit.converter.MyConverter"></bean>
        
        <!-- 2.将myConverter再纳入SpringMVC提供的Bean中 -->
        <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
            <property name="converters">
                <set>
                    <ref bean="myConverter"/>
                </set>
            </property>
        
        </bean>
        
        <!-- 3.将conversionService注册到annotation-driven -->
        <!-- 此配置是SpringMvc的基础配置,很多功能都需要通过该注解来协调 -->
        <mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>

 

iii.测试转换器:

    //自定义类型转换器
    @RequestMapping(value="testConverter")
    public String testConverter(@RequestParam("studentInfo") Student student){
        System.out.println(student.getId()+"-"+student.getName()+"-"+student.getAge());
        return "sucess";
    }

 

其中@RequestParam("studentInfo")是触发转换器的桥梁,该注解接收的数据是前端传递过来的:2-zs-23,但是需要将该数据赋值给修饰的目标对象(student);

posted @ 2020-10-15 21:25  MeatBallh  阅读(188)  评论(0)    收藏  举报