【发布时间】:2015-05-31 23:38:47
【问题描述】:
我有一个普通的 Spring MVC 控制器,它返回一个模型和视图。这很好用。 但现在我们正在转向纯 REST 架构,服务器仅通过 JSON 进行通信。
我没有改造所有东西,而是尽可能多地重复使用现有的控制器,这就是我能做的
我可以通过包含 ContentNegotiatingViewResolver 来重用对相同控制器的 GET 请求。所以现在同一个控制器可以返回一个jsp和一个模型转换成json基于accept header。
现在另一部分是 POST 请求,我需要一些帮助。
要绑定 json 请求,我必须在现有控制器上使用 @RequestBody,但我想以与 GET 请求相同的方式有条件地执行此操作。 因此,如果接受标头是 json,它应该使用该消息转换器来绑定模型,否则使用通常的 html 表单绑定。
完成后,如何为我的场景处理 BindingResult 对象?
总结一下我的问题:
- 我们能否根据 Accept 标头有条件地使用 @RequestBody
- 是否有任何配置可以自动将您的表单绑定错误对象(在 Spring MVC 控制器内)转换为基于 Accept 标头的 json 响应。
【问题讨论】:
-
旁注:与 JSON 通信不会使架构成为 RESTful。
-
您是否正在寻找像 javacodegeeks.com/2013/07/… 这样的自定义转换器?
-
假设您对 JSON 和 url-form-encoded 数据使用相同的 POJO,Spring 足够聪明,可以在给定请求的适当内容类型的情况下使用
@RequestBody转换 JSON 和表单数据.检查注册的HttpMessageConverter实例。
标签: java json spring spring-mvc servlets