0

我的控制器有以下调用

@ModelAttribute("commandObject")
public UsersCommand getCommand(HttpServletRequest req) throws Exception {
    ...
    return command;
}


@RequestMapping(value = {"addusers.json"}, method = RequestMethod.GET)
public void handleGet() {
        //empty method
}

@RequestMapping(value = {"addusers.json"}, method = RequestMethod.POST)
public void handlePost(@ModelAttribute("commandObject") UsersCommand command, HttpServletRequest req) throws Exception {
    //do stuff
}

在获取过程中,我得到了我的 UsersCommand 对象的 json,但是在我发帖后,我得到了我不需要的命令对象的 json,因为我想做火而忘记发帖。

如何避免 json 对象在发布期间下降到浏览器?

4

1 回答 1

0

似乎您只希望使用 GET 方法返回 JSON。为此,请完全删除该@ModelAttribute方法。这告诉 Spring 在控制器中的每个处理程序上将返回对象添加到您的模型中,这是您不想要的。然后将您的 GET 处理程序修改为如下所示:

@RequestMapping(value = {"addusers.json"}, method = RequestMethod.GET)
@ResponseBody
public UserCommand handleGet() {
    UserCommand cmd = getUserCommand();
    return cmd;
}

注释告诉 Spring将@ResponseBody返回类型序列化为 JSON(或 XML,如果您使用 JAXB 注释您的类,并取决于请求接受标头)。为此,您还需要将 Jackson 添加到您的类路径中,并确保您分别在 XML 或 Java 配置中使用<mvc:annotation-driven />@EnableWebMvc

这听起来像是自我推销,但如果你想了解更多细节,我写了一篇关于这个的帖子:http: //codetutr.com/2013/04/09/spring-mvc-easy-rest-based-json-services-with -响应体/

希望这会有所帮助!让我知道我是否可以为您添加更多清晰度。

于 2013-05-29T15:46:14.897 回答