2012-05-23 8 views
20

¿Hay una forma abreviada de hacerlo sin la designación explícita "text/json"?Forma fácil de representar JSON con código de estado HTTP en Grails

def remoteError = {  
    render(status: 500, contentType: "text/json"){ 
     error(exception: "a remote exception occurred") 
    } 
} 

Intenté usar as JSON ... ningún contenido, pero se devuelve el código de estado es correcto ...

render(status: 500, exception: params.exception) as JSON 

Respuesta

37

Si utiliza un parámetro del convertidor a render entonces no se puede especificar cualquier otro parámetro tal como el estado que normalmente tendría al usar vistas gsp. Sin embargo, puede establecer el estado de respuesta antes de llamar a render:

response.status = 500 
render([error: 'an error occurred'] as JSON) 
+1

En realidad, esto produce una excepción de yeso porque 'params.exception' es una cadena. Intenté 'def errorMsg = [error:'un error occurred ']' 'render errorMsg como JSON', eso funciona. – raffian

+1

@RaffiM por supuesto, cambié mi respuesta para renderizar un mapa en lugar de una cadena que no funcionará. – krock

+1

tuvo que hacer otro pequeño ajuste, 'render ([error: 'sdf'] como JSON)', thx para las sugerencias – raffian

2
render(status:500,text:(errors as JSON).toString(),contentType: 'application/json') 
Cuestiones relacionadas