springMVC学习笔记 --- day03参数绑定
2016-08-13 23:21
393 查看
一:参数绑定
1.基础类型的参数绑定
要求:页面上字段的name属性的值要和方法中参数的名称相同
@RequestParam标签的使用
当页面传递的字段name值和controller中方法中的参数名称不相同时,使用@RequestParam将页面上的字段值绑定到方法中的参数上,但是使用该注解时要求参数一定有值,如果想让其没有值时也可以,需加上:required=false,此时也可以设置传递的值为null时的默认值,使用defaultValue属性
@RequestMapping(value="editItems.do") //@RequestParam注解将页面上name值为 pid 的字段的值绑定到id参数上 public String edit(@RequestParam(value="pid",required=false,defaultValue="1") Integer id){ return "toEdit"; }
2.Boolean类型的参数绑定
后台传递 0 或者 false 则自动转为 false后台传递 1 或者 true 则自动转为 true
3.参数类型为包装类
如果参数类型为包装类,即类A中有另一个类B为该类A的属性,则在页面中传递值时的写法为name="B.属性"例如:
POJO
public class QueryVo { private User user; private Boolean isDel; private Items items;Controller
@RequestMapping(value="/items/toEdit.do") public String toEdit(QueryVo vo, Model model){ return "toEdit"; }
jsp页面
<tr> <td width="20%" class="pn-flabel pn-flabel-h"> 商品生产日期:</td><td width="80%" class="pn-fcontent"> <input type="text" class="required" name="items.createtime" value="<fmt:formatDate value="${items.createtime }" pattern="yyyy-MM-dd HH:mm:ss"/>" maxlength="80"/> </td> </tr> <tr> <td width="20%" class="pn-flabel pn-flabel-h"> 商品描述:</td><td width="80%" class="pn-fcontent"> <input type="text" class="required" name="items.detail" maxlength="80" value="${items.detail }" size="60"/> </td> </tr> <tr> <td width="20%" class="pn-flabel pn-flabel-h"> 是否可用:</td><td width="80%" class="pn-fcontent"> <input type="text" class="required" name="isDel" maxlength="80" size="60"/> </td> </tr>
4.参数类型为集合时
参数为list时不能直接放在controller方法中的参数上,而时应该放在包装类中进行接收a、参数为Map
POJO
public class QueryVo { private Map<String , String> map;JSP
<tr> <td width="20%" class="pn-flabel pn-flabel-h"> 数组:</td><td width="80%" class="pn-fcontent"> <input type="text" class="required" name="map['color']" maxlength="80" size="60"/> <input type="text" class="required" name="map['size']" maxlength="80" size="60"/> </td> </tr>
b、参数为List,泛型为String
POJO
public class QueryVo { private List<String> list;
JSP
<tr> <td width="20%" class="pn-flabel pn-flabel-h"> list:</td><td width="80%" class="pn-fcontent"> <input type="text" class="required" name="list" maxlength="80" size="60"/> <input type="text" class="required" name="list" maxlength="80" size="60"/> </td> </tr>
c、参数为List,泛型为类
POJO
public class QueryVo { private List<User> users;
JSP
<tr> <td width="20%" class="pn-flabel pn-flabel-h"> list==User1:</td><td width="80%" class="pn-fcontent"> <input type="text" class="required" name="users[0].username" maxlength="80" size="60"/> <input type="text" class="required" name="users[0].address" maxlength="80" size="60"/> </td> </tr> <tr> <td width="20%" class="pn-flabel pn-flabel-h"> list==User2:</td><td width="80%" class="pn-fcontent"> <input type="text" class="required" name="users[1].username" maxlength="80" size="60"/> <input type="text" class="required" name="users[1].address" maxlength="80" size="60"/> </td> </tr>
d、参数类型为日期
由于日期类型的格式不确定,因此在进行参数绑定之前需要使用转换器对日期的格式进行转换
(1)、编写转换器类
package com.ssm.common.convertion; import java.text.SimpleDateFormat; import java.util.Date; import org.springframework.core.convert.converter.Converter; /** * 自定义日期转换类,实现Converter接口 * Converter<S, T> 其中:S 是页面传递的参数类型 T 是需要转换为的类型 * @author Administrator * */ public class DateConvertor implements Converter<String, Date> { @Override public Date convert(String source) { try { if(source != null){ return new SimpleDateFormat("yyyy-MM-dd HH-mm-ss").parse(source); } } catch (Exception e) { // TODO: handle exception } return null; } }
(2)、在springmvc核心配置文件中添加转换器
<!-- 处理器映射器,处理器适配器 使用该配置可以替代处理器适配器和处理器映射器的配置--> <mvc:annotation-driven conversion-service="conversionService" /> <!-- 配置自定义转换器 --> <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> <property name="converters"> <list> <bean class="com.ssm.common.convertion.DateConvertor"></bean> </list> </property> </bean>
e、接收的参数类型为数组
springmvc默认会将具有同名框的一组值使用", "隔开,即使用逗号+空格进行分割放入数组中
(1)、页面的写法
<table width="100%" border=1>
<tr>
<td>选择</td>
<td>商品名称</td>
<td>商品价格</td>
<td>生产日期</td>
<td>商品描述</td>
<td>操作</td>
</tr>
<c:forEach items="${itemList }" var="item" varStatus="status">
<tr>
<td>
<input type="checkbox" name="ids" value="${item.id }">
<input type="hidden" name="itemList[${status.index }].id" value="${item.id }">
</td>
<td><input type="text" name="itemList[${status.index }].name" value="${item.name }"></td>
<td><input type="text" name="itemList[${status.index }].price" value="${item.price }"></td>
<td><input type="text" name="itemList[${status.index }].createtime" value="<fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/>"></td>
<td><input type="text" name="itemList[${status.index }].detail" value="${item.detail }"></td>
<td><a href="${pageContext.request.contextPath }/items/itemEdit.action?id=${item.id}">修改</a></td>
</tr>
</c:forEach>
</table>
(2)、controller中接收的参数形式
@RequestMapping("/queryitem") public String queryItem(QueryVo queryVo, int[] ids, ArrayList<Items> itemList) { //ids的内容为[1, 2, 3, 4, 5] System.out.println(ids); System.out.println(queryVo); return "success"; }
相关文章推荐
- springmvc学习笔记(11)-springmvc注解开发之简单参数绑定
- SpringMVC 学习笔记2 - 参数绑定
- springmvc学习笔记(12)-springmvc注解开发之包装类型参数绑定
- springmvc学习笔记(13)-springmvc注解开发之集合类型参数绑定
- springmvc学习笔记(12)-springmvc注解开发之包装类型参数绑定
- 整理一下当年的学习笔记之:SpringMVC的各种参数绑定方式
- 【SpringMVC注解开发】案例驱动-包装类型pojo参数绑定 SpringMVC学习笔记(五)
- springmvc学习笔记(11)-springmvc注解开发之简单参数绑定
- SpringMVC学习笔记(九)——简单类型、pojo类、自定义日期类型的参数绑定
- springmvc学习笔记(13)-springmvc注解开发之集合类型参数绑定
- Springmvc学习笔记(4)之复杂参数类型绑定、校验、数据回显和异常处理
- 【SpringMVC学习05】SpringMVC中的参数绑定总结
- SpringMVC学习笔记(4):绑定数据(2)
- springmvc学习笔记——传递对象作为参数(POJO)
- 【SpringMVC学习05】SpringMVC中的参数绑定总结——较乱后期准备加入 同一篇幅他人的参数绑定
- SpringMVC 学习笔记(三) 使用ServletAPI 和 实体 做为参数
- SpringMVC学习笔记:Ajax与Controller的参数交互
- 【SpringMVC学习05】SpringMVC中的参数绑定总结
- Springmvc学习篇(3)之参数绑定
- 学习笔记4-Action参数绑定