Mensagem de erro do validator no Webwork

pessoal, vou exemplificar meu problema, tenho um <ww:textfield/> no meu form, que direciona pra uma FooAction. Essa Action tem um FooAction-validation.xml que verifica se foi digitado algo no input (requiredstring), do contrario, exibe a mensagem de erro definida no FooAction-validation.xml ao lado do campo no html, só que essa mensagem é exibida sempre ao lado esquerdo do label do campo, ou seja, se eu tenho isso:

Nome: <input>

e o usuário submete sem digitar nada, o erro aparece assim:

[color=red]Erro, você deve digitar um nome.[/color] Nome: <input>

bem, eu não quero que apareça a esquerda, e sim a direita, assim:

Nome: <input> [color=red]Erro, você deve digitar um nome.[/color]

… ou seja, gostaria de colocar a mensagem de erro onde eu quisesse, não necessariamente ao lado do input, mas poderia ser em uma <TD> diferente na mesma <TR> do html… é possivel? se sim, como? valeu!

A posicao das mensagens de erro estao nos templates do webwork que fica no jar (o padrao eh o xhtml)

pra mudar a posicao da mensagem vc tera q fazer outro template (pode se basear no template xhtml do webwork de preferencia) ou usar o template simple q vem com o webwork e tratar os erros na mao.

nao sei se tem outra maneira.

flw!

putz, mas ai é terrível… fica muito feio com as mensagens a esquerda, fica tudo desalinhado e junto ao label do input, deve haver outra maneira, ou a galera que fez esse template não tem noção nenhuma de agrupamento de componentes numa página… :?

voltei… bem, como seria tratar os erros na mão? Definir a posição deles na mão tu diz? Ou todo o esquematozóide pro tráz do WW q pega esses erros!? :shock:

A edicao do template nao eh tao ruim. Copie o xhtml padrao do WebWork e edite pra ficar alinhado do jeito que voce quer. E por tabela voce ainda pode personalizar outros detalhes dos componentes. Depois configure no webwork.properties e boas. :smiley:

Marcio Kuchma

particularmente, pq não itera os erros na mão?

#foreach ($error in $fieldErrors) &lt;center&gt;<b>Erro formatado do meu jeito</b>&lt;/center&lt;br> #end

Esse é usando velocity, creio que com jsp não seja muito complicado…

poxa estava escrevendo amensagem quando Lucas Teixeira enviou a mensagem, acho que isso vale pro que eu quiz dizer.
:?
Pessoal Falando em Templates do WW2.
se eu não usar as Tags() do WW2 ele não mostra os erros. tipo se eu usar os controles HTML no lugar das tags do WW2.

Minha pergunta, se eu usar Tags HTML em vez das Tags do WebWork eu posso capturar os Erros ???

será que posso fazer isso ??? Qual o Objeto que o WW2 retorna que contém os erros ??? porque assim podemos usar controles HTML e fazer uma iteração dos Erros retornados pelo WW2 em outra parte do formulário.

Assim eu acho que facilita , fica melhor do que criar outros templates.

Valeus.

bem, oq eu tenho é isso aqui…

<ww:if test="hasErrors()">
   <br>
   <b><font color="#FF0000">Erro</font></b>
   <br>
   <ww:iterator value="actionErrors">
      <ww:property value="getText(top)"/>
   </ww:iterator>
   <br>
   <ww:if test="hasFieldErrors">
      <li>Verifique os erros em destaque no formulario
   </ww:if>
</ww:if>
<br>
<form name="form" action="login.action" method="POST">
   <br>
   <ww:textfield label="getText('login.username')" name="'username'" value="username"/>
   <br>
   <ww:textfield label="getText('login.password')" name="'password'" value="password"/>
   <br>
   <br>
   <ww:submit value="getText('login.enter')"/>
</form>

[quote=kartler]poxa estava escrevendo amensagem quando Lucas Teixeira enviou a mensagem, acho que isso vale pro que eu quiz dizer.
:?
Pessoal Falando em Templates do WW2.
se eu não usar as Tags() do WW2 ele não mostra os erros. tipo se eu usar os controles HTML no lugar das tags do WW2.

Minha pergunta, se eu usar Tags HTML em vez das Tags do WebWork eu posso capturar os Erros ???

será que posso fazer isso ??? Qual o Objeto que o WW2 retorna que contém os erros ??? porque assim podemos usar controles HTML e fazer uma iteração dos Erros retornados pelo WW2 em outra parte do formulário.

Assim eu acho que facilita , fica melhor do que criar outros templates.

Valeus.
[/quote]

hummm, realmente, mas não estaríamos perdendo alguma coisa se não usar as tags do WW? Digo, não deixaríamos passar desapercebido alguma funcionalidade que elas nos dão além de ler os erros automaticamente? :roll:

[quote=WNS]A posicao das mensagens de erro estao nos templates do webwork que fica no jar (o padrao eh o xhtml)

pra mudar a posicao da mensagem vc tera q fazer outro template (pode se basear no template xhtml do webwork de preferencia) ou usar o template simple q vem com o webwork e tratar os erros na mao.

nao sei se tem outra maneira.

flw![/quote]

tu sabe qual o caminho desse template simple do WW?

abra o arquivo webwork-xxx.jar e extraia o arquivo default.properties para WEB-INF/classes

renomeie default.properties para webwork.properties

abra o arquivo de properties e procure pela linha “webwork.ui.theme=xhtml”

mude onde ta “xhtml” para “simple”

que eu lembre eh soh isso

flws!

Obs: o arquivo de template fica dentro do webwork-xxxd.jar em template/simple

bele, pelo oq eu vi, o arquivo q do template q trata os erros é o controlheader.vm do XHTML, vou copiar todos os arquivos do XHTML pra um template meu, e alterar esse arquivo… vou ver como é, valeu :slight_smile:

cara, olha só oq eu tentei fazer, eu acho q achei onde se altera o lance no controlheader.vm no template xhtml, ai criei um template “custom” no mesmo lugar onde estão o xhtml e o simple (/template), ok, o conteúdo do custom é o mesmo do xhtml, só copiei e atirei lá pra dentro, ai no webwork.properties eu alterei a linha de webwork.ui.theme=xhtml para webwork.ui.theme=custom, até ai tudo bem, na teoria não se mudou nada… porém, qnd vou rodar a aplicação, estoura isso:

[code]HTTP Status 500 -


type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: javax.servlet.jsp.JspException: Fatal exception caught in com.opensymphony.webwork.views.jsp.ui.TextFieldTag tag class, doEndTag: Unable to find resource ‘/template/custom/text.vm’
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:821)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
org.apache.jsp.index_jsp._jspService(index_jsp.java:79)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)

root cause

org.apache.velocity.exception.ResourceNotFoundException: Unable to find resource ‘/template/custom/text.vm’
org.apache.velocity.runtime.resource.ResourceManagerImpl.loadResource(ResourceManagerImpl.java:501)
org.apache.velocity.runtime.resource.ResourceManagerImpl.getResource(ResourceManagerImpl.java:384)
org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:814)
org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:796)
org.apache.velocity.app.VelocityEngine.getTemplate(VelocityEngine.java:512)
com.opensymphony.webwork.views.jsp.ui.template.VelocityTemplateEngine.renderTemplate(VelocityTemplateEngine.java:38)
com.opensymphony.webwork.views.jsp.ui.AbstractUITag.mergeTemplate(AbstractUITag.java:422)
com.opensymphony.webwork.views.jsp.ui.AbstractUITag.doEndTag(AbstractUITag.java:207)
org.apache.jsp.index_jsp._jspx_meth_ww_textfield_0(index_jsp.java:299)
org.apache.jsp.index_jsp._jspx_meth_ww_i18n_0(index_jsp.java:121)
org.apache.jsp.index_jsp._jspService(index_jsp.java:72)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)

note The full stack trace of the root cause is available in the Apache Tomcat/5.0.26 logs.[/code]

wtf!!??? os conteúdos são os mesmos, o text.vm ta lá em custom!

ae, o chato do WW voltou, hahahaha, eu consegui fazer ele achar o text.vm, acontece q o WW não estava lendo o meu template custom do jar do WW, não sei pq… coloquei uma pasta /template com o meu custom em /WEB-INF/classes e ele achou… agora vou codar o .vm pra deixar a meu gosto :smiley:

só para fins de chatisse e conhecimento, heaheahea, eu consegui alterar do jeito que queria :slight_smile: