springmvc参数绑定(二)

1      包装类型pojo参数绑定

采用类似struts中对象.属性的方式命名,需要将pojo对象作为一个包装对象的属性,action中以该包装对象作为形参。

1.1  需求

         商品查询controller方法中实现商品查询条件传入。

1.2  实现方法

第一种方法:在形参中添加HttpServletRequest request参数,通过request接收查询条件参数。(比较笨不建议 使用)

第二种方法:在形参中让包装类型的pojo接收查询条件参数。

         分析:

         页面传参数的特点:复杂,多样性。条件包括 :用户账号、商品编号、订单信息。。。

         如果将用户账号、商品编号、订单信息等放在简单pojo(属性是简单类型)中,pojo类属性比较多,比较乱。

         建议使用包装类型的pojo,pojo中属性是pojo。

        

1.3  页面参数和controller方法形参定义

页面参数:

         商品名称:<inputname="itemsCustom.name"/>

         注意:itemsCustom和包装pojo中的属性一致会自动将请求参数赋值给pojo的属性。

controller方法形参:

         publicModelAndView queryItems(HttpServletRequest request,ItemsQueryVoitemsQueryVo) throwsException

 

       public class ItemsQueryVo{

 

   private Items items;

   //为了系统的扩展,对原始生成的po进行扩展

   private ItemsCustom itemsCustom;

 

2      集合类型绑定

2.1  数组绑定

2.1.1    需求

商品批量删除,用户在页面选择多个商品,批量删除。

2.1.2    表现层实现

关键:将页面选择(多选)的商品id,传到controller方法的形参,方法形参使用数组接收页面请求的多个商品id。

controller方法定义:

   // 批量删除

    @RequestMapping("/deleteItems")

    public String deleteItems(Integer[] items_id) throws Exception {

       System.out.println("234234");

       // 调用service批量删除商品

       // ...

       for (Integer integer : items_id) {

           System.out.println(integer);

       }

       return "success";

    }

 

页面定义:

<c:forEach items="${itemsList }" var="items">

<tr>

    <td><input type="checkbox"name="items_id" value="${items.id}"/></td>

    <td>${items.name }</td>

    <td>${items.price }</td>

    <td><fmt:formatDate value="${items.createtime}"pattern="yyyy-MM-dd HH:mm:ss"/></td>

    <td>${items.detail }</td>

   

    <td><a href="${pageContext.request.contextPath }/items/editItems.action?id=${items.id}">修改</a></td>

</tr>

</c:forEach>

 

2.2  list绑定

2.2.1    需求

通常在需要批量提交数据时,将提交的数据绑定到list<pojo>中,比如:成绩录入(录入多门课成绩,批量提交),

本例子需求:批量商品修改,在页面输入多个商品信息,将多个商品信息提交到controller方法中。

 

2.2.2    表现层实现

 

 

controller方法定义:

         1、进入批量商品修改页面(页面样式参考商品列表实现)

         2、批量修改商品提交

         使用List接收页面提交的批量数据,通过包装pojo接收,在包装pojo中定义list<pojo>属性

        

/*

 * 定义包装对象

 * Vo 表现层的东西;

 * 包装对象定义好可以从表现层一直传递到持久层

 * 不要用继承,集成不利于扩展

 */

public class ItemsQueryVo {

 

    private Items items;

    //为了系统的扩展,对原始生成的po进行扩展

    private ItemsCustom itemsCustom;

    //用户的信息       用扩展类,不用原始生成的,为了扩展性。应为将来有可能需要再次使用逆向工程生成一下源文件

    private UserCustom userCustom;

   

    //批量商品信息修改

    privateList<ItemsCustom> itemslist;

  

 

// 批量修改商品的提交

   // 通过ItemsQueryVo接收鼻梁提交是商品信息存储到ItemsQueryVoitemslist

   @RequestMapping("/editItemsAllSubmit")

   public StringeditItemsAllSubmit(ItemsQueryVo itemsVo) throws Exception {

      System.out.println(itemsVo.getItemslist().get(0).getName());

      return "success";

   }

 

页面定义:

注意空格不能有多余空格

2.3  map绑定

也通过在包装pojo中定义map类型属性。

 

在包装类中定义Map对象,并添加get/set方法,action使用包装对象接收。

包装类中定义Map对象如下:

Public class QueryVo {

private Map<String, Object> itemsInfo= new HashMap<String, Object>();

  //get/set方法..

}

页面定义如下:

 

<tr>

<td>学生信息:</td>

<td>

姓名:<inputtype="text"name="itemInfo['name']"/>

年龄:<inputtype="text"name="itemInfo['price']"/>

.. .. ..

</td>

</tr>

 

Contrller方法定义如下:

 

public String useraddsubmit(Modelmodel,QueryVo queryVo )throws Exception{

System.out.println(queryVo.getStudentinfo());

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值