2014-01-27 2 views
1

Я использую grails только для разработки поддерживаемых служб, а пользовательский интерфейс выполняется в angularJS или других технологиях. В основном это означает, что я не пишу никаких «взглядов». Я не переопределяю любые методы CRUD в контроллере.Как изменить визуализатор по умолчанию grails

Мой контроллер выглядит следующим образом:

class EmployeeController extends RestfulController { 
    EmployeeController() { 
     super(Employee) 
    } 
} 

Так что это не так, когда запрос GET сделан из браузера Grails отвечает так: HTTP Status 404 -/файл-трекер/WEB- INF/grails-app/views/employee/show.jsp

Я предполагаю, что grails по умолчанию отображает виды. Но когда тот же запрос GET сделан от curl, я получаю данные.

Что не так? Должен ли я переопределить действие «показать» и явно показать JSON (поскольку мне нужны данные JSON в ответ)?

ответ

1

Это происходит из-за content negotiation. Ключ - это HTTP-заголовок Accept, который отправляется браузером и не отправляется curl, если вы его явно не определили.

Посмотрите на RestfulController Исходный код и определение метода respond.

+0

Благодаря @Alexander, вы имеете в виду, что Accept не отправляется браузером по умолчанию. Потому что я отправляю Accept из curl. – vikas

+0

Нет, каждый браузер отправляет заголовок Accept. Например, мой Chrome отправляет 'Accept: text/html, application/xhtml + xml, application/xml; q = 0.9, image/webp, */*; q = 0.8' –

+0

oh ... Я не уверен, что такое проблема ? grails что-то делает с заголовком Accept? от завитка, с Accept заголовка - это работает от завитка, без Accept заголовка - 404 из браузера (я предполагаю, что браузер настройку Accept) - 404 от применения angularJS с/без Accept - 404 – vikas

Смежные вопросы