Capturar request.status via <formRemote>
30/08/2013 13:52
0
Bom dia.

Estou com uma dúvida pertinente. Tenho o seguinte código em um formulário AJAX:


<g:formRemote name="contrato_create" url="[controller: 'contrato', action: 'create']" action="${createLink(controller: 'contrato', action: 'create') }"
onLoading="ajaxStart()"
onLoaded="ajaxStop()"
onFailure="populateResponseError(data)"
onSuccess="populateResponse(data)"
>


E na minha action tenho o seguinte retorno em caso de erro de validação:


def create = { ObjetoCommand command ->

/** Faz a validação do formulário usando o <code>ContratoComercialCommand</code> */
if(command.hasErrors()) {

/** Pego o valor default da localidade. eg: @file resources.groovy */
def locale = Locale.default

/** Crio uma coleção de mensagens de erro
* <code>Collection</code>
* */
def errorMessage = command.errors.allErrors.collect { messageSource.getMessage(it, locale) }

/** Defino a resposta como válida pelo servidor */
response.status = 400 // (400) Bad request, mas também pode ser utilizado para não validação.

/** Retorno as mensagens como JSON */
render errorMessage as JSON
return

}


Agora vem a dúvida. Pq não consigo capturar o erro '400' usando on400 no form? Já tentei e ele não executa nenhuma ação. E quando ele falha, não consigo capturar os parâmetros, ele me retorna a mensagem que
ReferenceError: data is not defined
mas quando eu obtenho a mensagem de sucesso ele executa normalmente.

Teriam alguma idéia do pq isso acontece?

Estou usando a ver. 2.1.1

Desde já agradeço as respostas.
Tags: formRemote, ajax, grails, request, http


0
Olá Carlos!

Eu não tenho certeza, mas se não me engano é por que o teu render está depois do response.status = 400.

Faça um teste invertendo as linhas.


0
Se não funcionar a inversão, tente só com 1 linha

render(text: errorMessage as JSON, contentType: "application/json", status:400)




Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto