Нужно приложение / JSON из приложения RESTful Roo - PullRequest
2 голосов
/ 01 октября 2011

Я создал базовое приложение RESTful Roo, используя следующий Roo-скрипт (Roo 1.1.5).

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-контроллеров, однако это кажется 1) громоздким, 2) не очень работающим (я получаю МНОГО ошибок при введенном источнике).

Можно ли заставить WS возвращать приложение / json на общих основаниях? Например, возможно ли объединить ContentNegotiatingViewResolver с контроллерами aj, сгенерированными для пользователя? (И почему код, сгенерированный roo, явно устанавливает приложение / текст как его тип содержимого в первую очередь? Является ли взлом аддона JSON roo жизнеспособным решением?)

Полагаю, что я действительно спрашиваю, это: Как вы думаете, что является лучшим способом заставить приложение roo scaffolded возвращать доменные объекты как application / json через WS?

1 Ответ

2 голосов
/ 05 октября 2011

Вы решили проблему, потому что у меня такой же ...?

Хорошо, у меня есть одно решение: добавьте методы к вашему контроллеру и не позволяйте AOP Framework добавить их:

@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);
}
...