bom pessoal, comecei a usar o Tiles para montar minha camada de visualização, até aí beleza, montei o definition e tal, funcionou blz, mas tem um atributo no definition que se chama error, que contém,
<definition name="usuarios.view" path="/view/usuarioNovo.jsp">
<put name="erros" value="/view/blocos/erros.jsp"/>
<put name="tabela" value="/view/blocos/tabelaGerencia.jsp" />
</definition>
e dentro dessa jsp erros.jsp contém apenas:
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<html:errors/>
no jsp esta assim:
<tiles:get name="erros"/>
<tiles:get name="tabela"/>
só que toda hora que a minha aplicação lança um erro, da NullPointer, alguém sabe porque isso esta acontecendo?
obs: quando não tem nenhum erro funciona blz!
vlw!
tipo… esse <html:errors/> soh vai fazer aparecer algo na tela quando eu tiver algum erro no validate, quando eu não usei o tiles colocando tudo no mesmo jsp, funcionou blz…
mais (edit)…
descobri que este problema acontece devido a alguma problema no forward, como eu estou usando o Struts-validate, quando meu form não passa na validação ele volta direto pro jsp, não passa pelos action, aí to achando e tem algumca relação com isso…
a msg de erro é a seguinte:
[code]org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:263)
org.apache.struts.action.RequestProcessor.internalModuleRelativeForward(RequestProcessor.java:1023)
org.apache.struts.tiles.TilesRequestProcessor.internalModuleRelativeForward(TilesRequestProcessor.java:345)
org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:98
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:207)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause
java.lang.NullPointerException
org.apache.struts.taglib.tiles.InsertTag.processName(InsertTag.java:527)
org.apache.struts.taglib.tiles.InsertTag.createTagHandler(InsertTag.java:482)
org.apache.struts.taglib.tiles.InsertTag.doStartTag(InsertTag.java:43
org.apache.jsp.view.usuarioNovo_jsp._jspx_meth_tiles_get_0(org.apache.jsp.view.usuarioNovo_jsp:185)
org.apache.jsp.view.usuarioNovo_jsp._jspService(org.apache.jsp.view.usuarioNovo_jsp:114)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:263)
org.apache.struts.action.RequestProcessor.internalModuleRelativeForward(RequestProcessor.java:1023)
org.apache.struts.tiles.TilesRequestProcessor.internalModuleRelativeForward(TilesRequestProcessor.java:345)
org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:98
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:207)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
[/code]
[size=“11”][color=“red”]* Editado: Lembre-se de utilizar BBCode em seus códigos - marcossousa[/color][/size] :joia:
Bom cara, a minha página de erros está assim. Vê se te ajuda um pouco…
#%@ taglib uri="/tags/struts-bean" prefix="bean" %#
#%@ taglib uri="/tags/struts-html" prefix="html" %#
#%@ taglib uri="/tags/struts-logic" prefix="logic" %#
#style type='text/css'#@import url( '/rhmasterweb/estilos/default.css' );#/style#
#html:html locale="true"#
#head#
#title##bean:message key="erro.titulo"/##/title#
#html:base/#
#/head#
#body#
#center#
#blockquote#
#h1##font size="30"##bean:message key="erro.titulo"/##/font##/h1#
#table##tr##td#
#logic:messagesPresent#
#ul#
#html:messages id="error"#
#li##h3##bean:write name="error"/##/h3##/li#
#/html:messages#
#/ul#
#/logic:messagesPresent#
#/td##/tr##/table#
#/blockquote#
#br/#
#html:button property="voltar" onclick="javascript:history.go(-1);" styleId="voltar" styleClass="botao"##bean:message key="prompt.voltar"/##/html:button#
#/center#
#/body#
#/html:html#
Eu vou adicionando e lançando os erros assim:
errors.add( ActionErrors.GLOBAL_ERROR, new ActionError("errors.slfam.duplicado"));
...
if( !errors.isEmpty() ) {
saveErrors( request, errors );
System.out.println("****** error ******");
System.out.println( errors.hashCode() );
System.out.println( errors.size() );
System.out.println( errors.toString() );
return ( mapping.findForward("error") );
} else {
return ( mapping.findForward("success") );
}