grails - smart - ¿cómo se soluciona el error 404?
¿Cómo puedo devolver un código de estado 404/50x desde un controlador Grails? (4)
Establecer el estado de respuesta con su propia declaración es suficiente. No se ve muy feo y es bastante sencillo:
response.status = 404;
He usado esto con éxito y he visto a otros hacerlo de esta manera también. Como es solo un colocador, también puede hacer otras cosas después de configurar el estado. Cualquiera que sea el estado que establezca en último lugar será lo que HttpServletResponse usa cuando envía la respuesta al cliente.
Tengo un controlador que necesita devolver una página 404 y un código de estado en ciertas condiciones. Parece que no puedo averiguar cómo hacer esto en Grails. Un compañero de trabajo recomendó este método:
response.sendError(HttpServletResponse.SC_NOT_FOUND)
que funciona perfectamente bien, pero no es muy parecido a Grails. Sé que el método de render de Rails toma un argumento de estado, pero el renderizado de Grails no tiene esa funcionalidad. ¿Hay algo que me falta, cuál es la mejor manera de lograr esto?
No sé en qué versión comenzó esto, pero en Grails 2.2.1 puedes:
render(status: 503, text: ''Failed to do stuff.'')
response.sendError(404)
funcionará con Grails UrlMappings
mientras que response.status = 404
no lo hará por algún motivo. Esto es útil si desea generar una página de error 404 personalizada, en lugar de simplemente devolver 404 al navegador.
response.sendError
y response.setStatus
son las únicas dos formas que conozco. Si usted static import HttpServletResponse
, entonces no es tan ''no parecido a un grial''.