Pergunta

Eu tenho um controlador que precisa voltar uma página 404 e código de status sob certas condições. Eu não consigo descobrir como fazer isso em Grails. Um colega de trabalho recomendou este método:

response.sendError(HttpServletResponse.SC_NOT_FOUND)

que funciona perfeitamente bem, mas não é muito Grails-like. Eu sei Rails' método render tomar um argumento status, mas Grails' tornar não tem essa funcionalidade. Existe algo que eu estou ausente, qual é a melhor maneira de conseguir isso?

Foi útil?

Solução

A definição do status de resposta com a sua própria declaração é bom o suficiente. Ele não parece muito feio e é bastante simples:

response.status = 404;

Eu usei isso com êxito mim e vi outros fazê-lo desta forma também. Uma vez que é apenas um setter, você também pode fazer outras coisas depois de definir o status. Qualquer que seja o estado de definir último será o que o HttpServletResponse usa quando ele realmente envia a volta resposta para o cliente.

Outras dicas

response.sendError(404) irá trabalhar com Grails UrlMappings enquanto response.status = 404 não por algum motivo. Isso é útil se você quiser processar uma página de erro 404 personalizada, ao invés de apenas o envio de 404 volta para o navegador.

Eu não sei o que versão isso começou, mas em Grails 2.2.1 você pode fazer:

render(status: 503, text: 'Failed to do stuff.')

http://grails.org/doc/2.2.1/ ref / Controladores / render.html

response.sendError e response.setStatus são as únicas duas maneiras que eu conheço. Se você static import HttpServletResponse, então não é que 'un-grails-like'.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top