Spring Controller Content-Type

时间:2015-06-29 12:38:55

标签: spring

我已经定义了一个控制器(见下文),并指定它生成JSON,但是在请求(使用curl)时,返回Content-Type text/html。我可以通过直接设置HttpServletResponse上的标题来覆盖它,但我不确定这是否是预期的行为,如果是这样,我正在做的是正确的解决方法。

@Controller
@RequestMapping(value = "/test", produces = MediaType.APPLICATION_JSON_VALUE)
public class Test { 

    @RequestMapping(value = "/home", method = RequestMethod.GET)
    public String home(final Model model, final HttpServletRequest request, final HttpServletResponse response) {

        return "some/freemarker/template/path";

    } 

}

Content-Type: text/html;charset=UTF-8

更新

我应该补充一点,我使用Freemarker作为视图技术。

1 个答案:

答案 0 :(得分:0)

为了让Controller返回JSON,您需要执行

使用@ResponseBody

标记所有控制器方法
@Controller
@RequestMapping(value = "/test", produces = MediaType.APPLICATION_JSON_VALUE)
public class Test { 
    @ResponseBody
    public String json() {

    }
}

使用@RestController注释

@RestController
@RequestMapping(value = "/test", produces = MediaType.APPLICATION_JSON_VALUE)
public class Test { ... }