springMVC传对象参数返回JSON格式数据
Posted 山高我为峰
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springMVC传对象参数返回JSON格式数据相关的知识,希望对你有一定的参考价值。
假如请求路径:http://localhost/test/test.do?user.id=1
后台接收参数的方法如下:
@RequestMapping("/test") public ModelAndView test(HttpServletRequest request,HttpServletResponse response,User user) throws IOException { response.setContentType("text/html; charset=utf-8"); PrintWriter out = response.getWriter(); System.out.println("user.id=" + user.getId()); JSONObject jsonObject=new JSONObject(); JSONObject userJson=new JSONObject(); userJson.put("id", user.getId()); userJson.put("name", "张三"); jsonObject.put("user", userJson); out.print(jsonObject.toString()); return null;//这里需return null,如果return new ModelAndView则会直接转发 }
那么在后台接收到的参数中,user对象的id属性是null。如果路径换为http://localhost/test/test.do?id=1,则user对象的id属性是1。
这里必须用id=1而不是user.id=1,因为默认情况下springMVC是不支持user.id这种传参方式的。
要想springMVC支持user.id这种传参方式,需要在controller中添加一个前缀绑定:
@InitBinder("user") public void initBinderByUser(WebDataBinder binder) { binder.setFieldDefaultPrefix("user."); }
如果接收到的参数不止一个对象,比如有user、admin,则添加相应的前缀绑定:
@InitBinder("user") public void initBinderByUser(WebDataBinder binder) { binder.setFieldDefaultPrefix("user."); } @InitBinder("admin") public void initBinderByAdmin(WebDataBinder binder) { binder.setFieldDefaultPrefix("admin."); }
以上是关于springMVC传对象参数返回JSON格式数据的主要内容,如果未能解决你的问题,请参考以下文章
使用SpringMVC返回java对象数据时会自动转为json格式传给前端