`
一笑_奈何
  • 浏览: 66957 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

springMVC get请求参数封装

 
阅读更多
    对于最近我们项目组在用springMVC框架做东东,但是了在Get请求传递参数的时候我就遇到了这样的一个问题,就是如果对于参数少的可以使用注解@RequestParam(value="xxx")来进行绑定,但是对于参数多的怎么办了,而且我还发现一个问题怎样和@valid这个注解结合使用了。
     所以我在上班之余研究了一下怎样把get请求的参数封装到实体类中去,于是我自己定义了一个实体类,如下:
   
public class Commodity {
  private String name;
  private Integer brandId;
  
  public Commodity() {
    
  }
  
  public Commodity(String name, Integer brandId) {
    this.name = name;
    this.brandId = brandId;
  }

  /**
   * @return the name
   */
  public String getName() {
    return name;
  }

  /**
   * @param name the name to set
   */
  public void setName(String name) {
    this.name = name;
  }

  /**
   * @return the brandId
   */
  public Integer getBrandId() {
    return brandId;
  }

  /**
   * @param brandId the brandId to set
   */
  public void setBrandId(Integer brandId) {
    this.brandId = brandId;
  }
}
    

    jsp页面,页面如下:
   
       <a href="/commodity/search.do?name='猪肉'&brandId=12">商品列表</a>
    

   然后,我自己写了一个测试的控制层,代码如下:
  
       @Controller
@RequestMapping(value="/commodity")
public class CommodityController {
  
  @RequestMapping(value="/search.do")
  public String commoditySearch(Commodity commodity, ModelMap modelMap) {
    System.out.println(commodity.getName()+":"+commodity.getBrandId());
    return "commodity/search";
  }
}
   

    运行tomcat之后,访问首页点击超链接他直接跳转到commodityController里面,并且把我传递的参数封装成了Commodity对象,但是我把链接里面的参数名字改了一下发现这个实体类是无法接受我传递的参数,说明从客户端发出来的请求之后就会根据请求调用control层的代码,请求我估计根据调用的请求会实例化一个Commodity对象,然后调用Commodity对象的set方法(估计根据“set”+参数名称),然后把参数封装到实体里面,这样做的话就对于传参以及验证非常方便了。
    不过以上写的只是我自己边写边想的结果,如有不对请大家立即指出。希望能够与大家共同进步
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics