springmvc 通过对象来接收参数,为什么默认会返回该对象?

新手上路,请多包涵

0.我通过url 请求接口,这里我没有传递参数,但是不影响我的查询.
图片描述

1.我的java代码为:
图片描述

疑问:我在java中返回的时候只有 "state" 和 "data" 两个字段,但是默认给我多返回了一个对象,就是我java接受的那个对象

怀疑:是 ModelAndView 自身默认源码的问题,我去google了一下,但是没有找到我想要的结果

想要效果:去掉默认返回的对象,麻烦大家了.

阅读 2.9k
4 个回答
新手上路,请多包涵

我没记错的话 加个@responsebody;而且要是返回自定义的对象用gson转成的json串返回,是不需要框架自带的modelandview对象

原因:因为默认处理方式是@ModelAttribute
解决:@ResponseBody + 返回要返回的对象
不返回视图的时候忘记ModelAndView

modelAndView不会加上你的这个参数的, 问题应该出在你的这个默认"querList"view上, 如果想直接返回你想要的效果, 不如返回类型改成map, 加上注解@ResponseBody, 这样就好多了

新手上路,请多包涵

我是忘记加@RequestBody也出现问题,现在解决了,解决如下:
原来的代码:

@RequestMapping("login")
public ModelAndView login( UserCriterial userCriterial) {
    ModelAndView mv = new ModelAndView();
    boolean success = userSerivce.login(userCriterial);
    mv.addObject("loginResult", success);
    mv.setView(new MappingJackson2JsonView());
    return mv;
}

返回的是:

{"userCriterial":{"userName":null,"pwd":null},"loginResult":false}

修改后的代码:

@RequestMapping("login")
public ModelAndView login(@RequestBody UserCriterial userCriterial) {
    ModelAndView mv = new ModelAndView();
    boolean success = userSerivce.login(userCriterial);
    mv.addObject("loginResult", success);
    mv.setView(new MappingJackson2JsonView());
    return mv;
}

返回的是:

{"loginResult":false}

注:测试返回值不可直接在url打访问后台的url:xxx.do,而应该把对象传过去,否则tomcat会报400错误。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏