【问题标题】:ModelAndView returning method objectModelAndView 返回方法对象
【发布时间】:2018-12-03 18:17:52
【问题描述】:

我有这个代码:

@Controller
public class createUserController {

    @RequestMapping(value = "/user/registerUser", method = RequestMethod.GET, produces = "application/json")
    public ModelAndView createFleet(HttpServletRequest request, HttpServletResponse response, User user) {

        ModelAndView model = new ModelAndView();
        model.setView(new MappingJackson2JsonView());


        model.addObject("userCreated", new UserCreateResponse(user.getId(), user.getAccessCode()));

        return model;

    }
}

有回应:

   {
  "user": {
    "id": null,
    "userName": "3",
    "password": "eccbc87e4b5ce2fe28308fd9f2a7baf3",
    "email": "3",
    "accessCode": "3"
  },
  "userCreated": {
    "id": null,
    "accessCode": "3"
  }
}

我不希望主要用户包含在响应中。我只是想要减少的细节,所以我不会发回原始请求。我试过 .clear() 但这给出了 404 错误

【问题讨论】:

  • 用 RestController 注释你的控制器,然后从你的方法返回一个 UserCreateResponse 响应而不是 ModelAndView。还有,如果这个方法要注册一个新用户,为什么叫createFleet(),为什么用GET而不是POST?
  • 做到了,谢谢。我打算改成 POST,我只是从另一个控制器复制它,需要更新它。

标签: java spring spring-mvc modelandview


【解决方案1】:

您可以如下更改您的控制器。当您尝试注册用户时,您应该使用 POST 而不是 GET。

@RestController
public class createUserController {

    @PostMapping("/user/registerUser")
    public UserCreateResponse createFleet(HttpServletRequest request, HttpServletResponse response, User user) {

      return new UserCreateResponse(user.getId(), user.getAccessCode());        

    }
}

【讨论】:

    猜你喜欢
    • 2012-05-24
    • 2020-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-09
    • 1970-01-01
    • 2021-03-12
    • 2012-05-04
    相关资源
    最近更新 更多