当页面传递的字段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"; }后台传递 0 或者 false 则自动转为 false
后台传递 1 或者 true 则自动转为 true
如果参数类型为包装类,即类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>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>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>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>由于日期类型的格式不确定,因此在进行参数绑定之前需要使用转换器对日期的格式进行转换
springmvc默认会将具有同名框的一组值使用", "隔开,即使用逗号+空格进行分割放入数组中