自定义类型转换器需要实现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>