通过注解实现SpringMVC, 一直按照Struts的思路去做传参,发现后台没有接收到前台的对象参数,试验了多种方法,终于发现了原因,在此做一下记录。
前台:
-
<form action="method" method="post">
-
<input name='id' value='张三'>
-
<input name='name' value='张三'>
-
<input name='sex' value='男'>
-
<input name='age' value='34'>
-
<input name='number' value='14512341345'>
-
<button type="submit">提交</button>
-
</form>
后台方法:
-
-
@Controller
-
public class SpringTest {
-
@RequestMapping(value="/method",method=RequestMethod.POST)
-
public ModelAndView method(UserInfo userInfo){
-
System.out.println(userInfo.getName());
-
System.out.println(userInfo.getSex());
-
ModelAndView view = new ModelAndView("success");
-
view.addObject("time",new Date());
-
return view;
-
}
-
}
注意:
1、在web.xml中一定要配置字符过滤器配置,否则中文传输到后台会发生乱码。
2、input表单中的name直接赋值为UserInfo的属性名称,不需要加对象名。
3、在Controller不需要UserInfo的get、set方法即可直接从前台获取对象。
4、form表单的method属性与方法注解中的method如果同时存在,两者一定要保持一致。
字符过滤器配置:
-
<filter>
-
<filter-name>encodingFilter</filter-name>
-
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
-
<!-- 指定编码格式 -->
-
<init-param>
-
<param-name>encoding</param-name>
-
<param-value>UTF-8</param-value>
-
</init-param>
-
<!-- 无视客户端请求编码格式,都使用过滤器配置的编码去解析请求 -->
-
<init-param>
-
<param-name>forceEncoding</param-name>
-
<param-value>true</param-value>
-
</init-param>
-
</filter>
-
<filter-mapping>
-
<filter-name>encodingFilter</filter-name>
-
<url-pattern>/*</url-pattern>
-
</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;
}