1.绑定包装pojo
例:使用包装的pojo接受商品信息的查询条件
- 包装对象定义如下
public class QueryVo {
private Item item;
public Item getItem() {
return item;
}
public void setItem(Item item) {
this.item = item;
}
}
- 页面定义如下
<td>商品id<input type="text" name="item.id"/> </td>
<td>商品名称<input type="text" name="item.name"/> </td>
- 接受查询条件
//绑定包装数据类型
@RequestMapping("/queryItem")
public String queryItem(QueryVo queryVo){
System.out.println(queryVo.getItem().getId());
System.out.println(queryVo.getItem().getName());
return "success";
}
2.自定义参数绑定
例:在商品修改页面可以修改商品的生产日期,并且根据业务需求自定义日期格式
分析:由于日期数据有很多种格式,spingmvc没办法把字符串转换成日期类型。所以需要自定义参数绑定。前端控制器接受到请求后,找到注解形式的处理器适配器,对RequestMapping标记的方法进行适配,并对方法中的形参进行参数绑定。可以在springmvc处理器适配器上自定义转换器Converer进行参数绑定。
一般使用<mvc:annotation-driven/>注解驱动加载处理器适配器,可以在此标签上进行配置。
- jsp页面显示时间
<tr>
<td>商品生产日期</td>
<td><input type="text" name="createtime"
value="<fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/>" /></td>
</tr>
- 自定义Converer
//Converter<S, T>
//S:source,需要转换的源的类型
//T:target,需要转换的目标类型
public class DateConverter implements Converter<String, Date> {
@Override
public Date convert(String source) {
try {
//把字符串转换为日期转换类型
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date=simpleDateFormat.parse(source);
return date;
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
//如果转换异常就返回空
return null;
}
}
- 配置Converter
可以同时配置多个转换器
<!-- 注解驱动 -->
<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>
<!-- 转换器配置 -->
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="com.feng.ssm.converter.DateConverter"></bean>
</set>
</property>
</bean>