需要RESTful Roo应用程序的application / json

时间:2011-10-01 19:49:30

标签: json content-type spring-roo

我使用以下Roo脚本(Roo 1.1.5)创建了一个基本的RESTful Roo应用程序。

project --topLevelPackage com.roorest
persistence setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY 
entity --class ~.domain.MyClass
field string --fieldName String1
web mvc setup
web mvc all --package ~.web
json all

当我访问RESTful WS请求application / json时,WS会吐出一个有效的json主体,但是内容类型设置为application / text(如果查看生成的(aj)控制器代码滴答,则非常有意义在后台)。

不幸的是,我需要让WS返回一个内容类型的application / json。我试图从json控制器中推送必要的方法,但是这看起来很麻烦,2)不能正常工作(我在推送源中遇到了很多错误)。

可以一般强制WS返回application / json吗?例如,是否可以将ContentNegotiatingViewResolver与roo生成的aj控制器结合起来? (为什么roo生成的代码首先明确地将应用程序/文本设置为内容类型?是否可以通过攻击JSON插件来获得可行的解决方案?)

我想我真正要问的是:您认为使用roo scaffolded应用程序将域对象作为application / json通过WS返回的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

你有没有解决问题,因为我只有同一个......?

好的,我有一个解决方案:将方法添加到控制器中,不要让AOP框架添加它们:

@RequestMapping(headers = "Accept=application/json")
@ResponseBody
public ResponseEntity<String> listJson() {
    HttpHeaders headers = new HttpHeaders();
    headers.add("Content-Type", "application/json; charset=utf-8"); //was app/text
    return new ResponseEntity<String>(Customer.toJsonArray(Customer
            .findAllCustomers()), headers, HttpStatus.OK);
}