Tratar servlet.error no controller [RESOLVIDO]
19/08/2009 00:00
0
Estou com um problema aqui, não conheço bem a linguagem groovy.
Quero tratar os erros 500, em um controller, passar para um "flash.error" e exibir na tela.

Alterei o UrlMapping para quando ocorrer um erro ele redirecionar para o controller
"500"(controller:'error',action:'getError')

até aqui tudo bem.

O meu problema esta em como receber os erros.
No "error.gsp" está assim:
<strong>Error $&#123;request.'javax.servlet.error.status_code'&#125;&#58;</strong> $&#123;request.'javax.servlet.error.message'.encodeAsHTML()&#125;<br/>
<strong>URI&#58;</strong> $&#123;request.'javax.servlet.error.request_uri'&#125;<br/>
<strong>Exception Message&#58;</strong> $&#123;exception.message?.encodeAsHTML()&#125; <br />


Eu preciso fazer algumas variaveis receberem esses erros e o &quot;flash.error&quot; receber essas variaveis.
Mas não faço ideia de como fazer isso no controller, não sei qual lib que trabalha com o servlet no controller..

já tentei algo do tipo:
import javax.servlet.http.HttpServletRequest
import javax.servlet.http.HttpServlet

class ErrorController extends HttpServlet&#123;

def getError(HttpServletRequest req)&#123;
String code = &quot;&quot;
Object codeObj = null

codeObj = req.getAttribute(&quot;javax.servlet.error.status_code&quot;)
code = codeObj.toString()

flash.error = &quot;$&#123;code&#125;&quot;
redirect(controller&#58;'aluno',action&#58;'list')
&#125;
&#125;

mas sem sucesso, gera varios erros na hora de compilar..

alguma ideia do que devo fazer?
Tags: Grails


0
olá erhorn,

estou precisando de algo bem parecido,

preciso que estes erros sejam mostrados na própria tela do cadastro, sem haver o redirecionamento da página para o error.gsp....

alguém tem alguma idéia de como fazer isto, pois comecei a pouco tempo, e não conheço muito a linguagem....

abraçossssss
24/08/2009 00:00


0
oi.

entendi qual seria a forma de fazer isso que eu quero, são as mesmas variaveis que tinha no .gsp, eu tava dando bobera!

fiz da seguinte forma:

class ErrorController &#123;

def getError = &#123;
String code = &quot;$&#123;request.'javax.servlet.error.status_code'&#125;&quot;
String causa = &quot;$&#123;request.'javax.servlet.error.message'.encodeAsHTML()&#125;&quot;
String uri = &quot;$&#123;request.'javax.servlet.error.request_uri'&#125;&quot;

String erro = &quot;Erro&#58; $&#123;code&#125; causado por&#58; $&#123;causa&#125; em&#58; $&#123;uri&#125;&quot;
flash.error = &quot;$&#123;erro&#125;&quot;

redirect(controller&#58;'aluno',action&#58;'list')
&#125;
&#125;


deveria funcionar, não é mesmo?!

O &quot;.status_code&quot; aparece &quot;500&quot; no flash da tela, beleza,
mas os demais vem &quot;null&quot; <!-- s:? --><img src="{SMILIES_PATH}/icon_confused.gif" alt=":?" title="Confused" /><!-- s:? -->

alguém sabe o porque disso?

valeu!
24/08/2009 00:00


0
Finalmente consegui resolver isso!

Ao invez de:

causa = &quot;$&#123;request.'javax.servlet.error.message'.encodeAsHTML()&#125;&quot;
uri = &quot;$&#123;request.'javax.servlet.error.request_uri'&#125;&quot;


dei um .dump() no request pra ver o que tinha e cheguei a conclusão que deveria ser assim:

causa = request.'exception'
uri = request.'javax.servlet.forward.request_uri'


abraços!
26/08/2009 00:00



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