java中springMVC list、map集合的参数绑定、自定义类型转换器的实现
List集合、Map集合
javaBean对象
public class Account implements Serializable{
private String username;
private String password;
private Double money;
// private User user;
private List<User> list;
private Map<String,User> map;
//get、set方法这里省略
}
list、map集合绑定的前端代码
把数据封装Account类中,类中存在list和map的集合
<form action="param/saveAccount" method="post">
姓名:<input type="text" name="username" /><br/>
密码:<input type="text" name="password" /><br/>
金额:<input type="text" name="money" /><br/>
用户姓名:<input type="text" name="list[0].uname" /><br/>
用户年龄:<input type="text" name="list[0].age" /><br/>
用户姓名:<input type="text" name="map['one'].uname" /><br/>
用户年龄:<input type="text" name="map['one'].age" /><br/>
<input type="submit" value="提交" />
</form>
自定义类型转换器
java对基础类型做了封装,但是特殊的类型、或用户自定义的类型框架无法识别,需要程序员手动进行转换,如下是前端代码,其中date是日期格式,springMVC识别的是2019/08/18格式,假设现在需要以2019-08-18形式传递,就需要自定义类型转换器,如下是前端代码
<form action="param/saveUser" method="post">
用户姓名:<input type="text" name="uname" /><br/>
用户年龄:<input type="text" name="age" /><br/>
用户生日:<input type="text" name="date" /><br/>
<input type="submit" value="提交" />
</form>
首先,需要实现Converter接口,定义自己的转换规则
public class StringToDateConverter implements Converter<String,Date>{
/**
* String source 传入进来字符串
* @param source
* @return
*/
public Date convert(String source) {
// 判断
if(source == null){
throw new RuntimeException("请您传入数据");
}
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try {
// 把字符串转换日期
return df.parse(source);
} catch (Exception e) {
throw new RuntimeException("数据类型转换出现错误");
}
}
}
然后,将写好的转换类对象配置到springMVC,使其正常工作
<!--配置自定义类型转换器-->
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="com.example.utils.StringToDateConverter"/>
</set>
</property>
</bean>
<!-- 开启SpringMVC框架注解的支持 -->
<mvc:annotation-driven conversion-service="conversionService"/>
然后springMVC就可以支持2019-08-18格式的日期数据了
有问题的地方欢迎指出