Captura de mensagem de erro

7 respostas
S

estou querendo capturar a mensagem de erro (ou sucesso) que vem da action, mas não entendo direito o funcionamento… sei que o que deve ser feito é algo parecido com o q vem a seguir:

<logic:messagesPresent message="true"> <html:messages id="msg" message="true"> <bean:write name="msg"/> <br/> </html:messages> </logic:messagesPresent>
mas não sei de onde vem essa propriedade name da tag <bean:write>…
alguém sabe me explicar o q é isso?
A action está salvando os erros e as mensagens, + não sei o q colocar nesse campo name… já tentei a variável q eu salvo no saveErrors(), mas nada… será que vou ter que salvar um bean no request?

7 Respostas

B

Para vc usar o <html:errors>, no JSP vc coloca isso:

&lt;html&#58;errors property="erroPagina"/&gt;

e no código Java, vc faz isso:

ActionMessages erro = new ActionMessages&#40;&#41;;
erro.add &#40;"erroPagina", new ActionMessage&#40;"key do message resource"&#41;&#41;;
saveErrors &#40;request, erro&#41;;
return mapping.findForward&#40;"aplicacao"&#41;;

O esquema do bean:write eh o seguinte: Vc pode colocar por exemplo na sessão ou no request um valor, tipo assim: request.setAttribute (“chave”, “valor”); e no bean:write, no atributo name, vc coloca o valor “chave” q daí ele vai pegar oq está no request e imprimir na página.

Entendeu?
Qq coisa posta ae…
Abraços…

S

do jeito q vc falo aí num deu certo não… e eu li em algum lugar também que pode ser usado o <html:messages> tanto para mensagem quanto para erro… basta setar o atributo message como true ou false de acordo com o desejado…
mas voltando ao assunto, qd dou o saveMessages na sessão, não dá erro, mas também não imprime nada… atualmente está assim:

&lt;logic&#58;messagesPresent message=&quot;true&quot;&gt; &lt;html&#58;messages id=&quot;msgs&quot; message=&quot;true&quot;&gt; &lt;bean&#58;write name=&quot;msgs&quot;/&gt; &lt;/html&#58;messages&gt; &lt;/logic&#58;messagesPresent&gt;
sendo que msgs é o nome com o qual eu salvei as mensagens (saveMessages(session,msgs)).

o erro retornado é javax.servlet.ServletException: Cannot find bean: “msgs” in any scope"

  • alguma dica? =/
S

continuo esperando… =/

I

Na página:

&lt;logic&#58;messagesPresent name="error.message"&gt;
			&lt;table&gt;
				&lt;tr&gt;
					&lt;td&gt;
						&lt;html&#58;image src="style/images/error.gif" /&gt;						
					&lt;/td&gt;
					&lt;td&gt;
						&lt;html&#58;messages name="error.message" id="message"&gt;$&#123;message&#125;&lt;/html&#58;messages&gt;
					&lt;/td&gt;
				&lt;/tr&gt;
			&lt;/table&gt;
&lt;/logic&#58;messagesPresent&gt;

No action…:

//...
final ActionMessages messages = new ActionMessages&#40;&#41;;
msgType = "error.message";
String key = "except." + e.getClass&#40;&#41;.getSimpleName&#40;&#41;;
final ActionMessage error = new ActionMessage&#40;key&#41;;
messages.add&#40;Globals.ERROR_KEY, error&#41;;
req.setAttribute&#40;msgType, messages&#41;;
//...

T+

S

na realidade eu tenho q buscar no jsp eh pelo conteúdo d msgType, não?? + eu testei os 2 d qualquer maneira e nenhum funcionou… =/
não dá erro, + também não exibe a mensagem…

I

Sim, o msgType é que o que tu vai procurar para mostrar. Tenho uma sugestão, além do messagePresent, tenta usar um notPresent (ou equivalente) Também podes fazer isto na tua página pra ter certeza de que o obj foi salvo:

&lt;%
System.out.println&#40;"error&#58; " + request.getAttribute&#40;"error.message"&#41;&#41;;
%&gt;

T+

S

pronto… conseguí… soh pra orientar quem buscar pelo mesmo problema aí vai o jeito q ficou aki comigo:
No jsp:

&lt;logic&#58;messagesPresent name=&quot;edit.success&quot; message=&quot;true&quot;&gt; &lt;html&#58;messages name=&quot;edit.success&quot; id=&quot;message&quot; message=&quot;true&quot;&gt; $&#123;message&#125; &lt;/html&#58;messages&gt; &lt;/logic&#58;messagesPresent&gt;

No java:

ActionMessages messages = new ActionMessages&#40;&#41;; ActionMessage msg = new ActionMessage&#40;&quot;msg.sucesso&quot;&#41;; messages.add&#40;&quot;edit.success&quot;, msg&#41;; saveMessages&#40;request, messages&#41;;

boa sorte :grin:

Criado 9 de novembro de 2006
Ultima resposta 29 de nov. de 2006
Respostas 7
Participantes 3