2012-05-23 8 views
20

Czy jest to skrótowy sposób bez wyraźnego oznaczenia "text/json"?Łatwy sposób renderowania JSON z kodem stanu HTTP w Grails

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

Próbowałem za pomocą as JSON ... no ale treść jest zwrócony kod stanu jest poprawna ...

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

Odpowiedz

37

Jeśli używasz parametru konwertera render to nie można podać żadnego innego parametru takiego taki status jak zwykle bywa, gdy używasz widoków GSP. Można jednak ustawić status odpowiedzi przed wywołaniem render:

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

To rzeczywiście rzuca wyjątek rzucania ponieważ 'params.exception' jest ciągiem. Próbowałem 'def errorMsg = [error: 'wystąpił błąd']' 'render errorMsg jako JSON', który działa. – raffian

+1

@RaffiM oczywiście, zmieniłem odpowiedź, aby renderować mapę zamiast łańcucha, który nie zadziała. – krock

+1

musiał dokonać kolejnej niewielkiej korekty, 'render ([błąd: 'sdf'] jako JSON)', thx za wskazówki – raffian

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