SpringMVC前台向后台传输对象

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

   前台:

  1.     

  2.     

  3.     

  4.     

  5.     

  6.     

后台方法:

 
  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.     

  2. encodingFilter

  3. org.springframework.web.filter.CharacterEncodingFilter

  4. encoding

  5. UTF-8

  6. forceEncoding

  7. true

  8. encodingFilter

  9. /*

方式二,传递的是参数

一种方式是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 getCatList(@RequestParam(value="id",defaultValue="0")long parentId)throws Exception{
        
        //查询数据库
        List list = itemCatService.getCatList(parentId);
        return list;
        
    }

你可能感兴趣的:(SpringMVC前台向后台传输对象)