SpringMVC前台向后台传输对象

通过注解实现SpringMVC, 一直按照Struts的思路去做传参,发现后台没有接收到前台的对象参数,试验了多种方法,终于发现了原因,在此做一下记录。

   前台:

  1. <form action="method" method="post">

  2.     <input name='id' value='张三'>

  3.     <input name='name' value='张三'>

  4.     <input name='sex' value='男'>

  5.     <input name='age' value='34'>

  6.     <input name='number' value='14512341345'>

  7.     <button type="submit">提交</button>

  8. </form>

后台方法:

 
  1.  

  2. @Controller

  3. public class SpringTest {

  4. @RequestMapping(value="/method",method=RequestMethod.POST)

  5. public ModelAndView method(UserInfo userInfo){

  6. System.out.println(userInfo.getName());

  7. System.out.println(userInfo.getSex());

  8. ModelAndView view = new ModelAndView("success");

  9. view.addObject("time",new Date());

  10. return view;

  11. }

  12. }

注意:

1、在web.xml中一定要配置字符过滤器配置,否则中文传输到后台会发生乱码。

2、input表单中的name直接赋值为UserInfo的属性名称,不需要加对象名。

3、在Controller不需要UserInfo的get、set方法即可直接从前台获取对象。

4、form表单的method属性与方法注解中的method如果同时存在,两者一定要保持一致。

字符过滤器配置:

 
  1.     <filter>

  2. <filter-name>encodingFilter</filter-name>

  3. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

  4. <!-- 指定编码格式 -->

  5. <init-param>

  6. <param-name>encoding</param-name>

  7. <param-value>UTF-8</param-value>

  8. </init-param>

  9. <!-- 无视客户端请求编码格式,都使用过滤器配置的编码去解析请求 -->

  10. <init-param>

  11. <param-name>forceEncoding</param-name>

  12. <param-value>true</param-value>

  13. </init-param>

  14. </filter>

  15. <filter-mapping>

  16. <filter-name>encodingFilter</filter-name>

  17. <url-pattern>/*</url-pattern>

  18. </filter-mapping>

方式二,传递的是参数

一种方式是get,通过地址栏传参

方法名(@PathVariable Long itemId)

 @Autowired
    private ItemService itemService;
    
    @RequestMapping("/item/{itemId}")
    @ResponseBody
    public TbItem getItemById(@PathVariable Long itemId){
        
        TbItem item = itemService.getItemById(itemId);
        return item;
        
    }

方式二:通过post传参

 @RequestMapping(value="/item/save",method=RequestMethod.POST)
    @ResponseBody
    public TaotaoResult createItem(TbItem item,String desc,String itemParams)throws Exception{
        TaotaoResult result= itemService.createItem(item,desc,itemParams);
        return result;
    }

三,传递的参数设置默认值:

方法名(@RequestParam(value="id",defaultValue="0")long parentId)

@Autowired
    private ItemCatService itemCatService;
    @RequestMapping("/list")
    @ResponseBody
    public List<EUTreeNode> getCatList(@RequestParam(value="id",defaultValue="0")long parentId)throws Exception{
        
        //查询数据库
        List<EUTreeNode> list = itemCatService.getCatList(parentId);
        return list;
        
    }

猜你喜欢

转载自blog.csdn.net/zalan01408980/article/details/82107687