Problema com o Tiles

2 respostas
F

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!

2 Respostas

F

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:

org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.handleJspException&#40;JspServletWrapper.java&#58;510&#41;
org.apache.jasper.servlet.JspServletWrapper.service&#40;JspServletWrapper.java&#58;393&#41;
org.apache.jasper.servlet.JspServlet.serviceJspFile&#40;JspServlet.java&#58;314&#41;
org.apache.jasper.servlet.JspServlet.service&#40;JspServlet.java&#58;264&#41;
javax.servlet.http.HttpServlet.service&#40;HttpServlet.java&#58;802&#41;
org.apache.struts.action.RequestProcessor.doForward&#40;RequestProcessor.java&#58;1085&#41;
org.apache.struts.tiles.TilesRequestProcessor.doForward&#40;TilesRequestProcessor.java&#58;263&#41;
org.apache.struts.action.RequestProcessor.internalModuleRelativeForward&#40;RequestProcessor.java&#58;1023&#41;
org.apache.struts.tiles.TilesRequestProcessor.internalModuleRelativeForward&#40;TilesRequestProcessor.java&#58;345&#41;
org.apache.struts.action.RequestProcessor.processValidate&#40;RequestProcessor.java&#58;98
org.apache.struts.action.RequestProcessor.process&#40;RequestProcessor.java&#58;207&#41;
org.apache.struts.action.ActionServlet.process&#40;ActionServlet.java&#58;1196&#41;
org.apache.struts.action.ActionServlet.doPost&#40;ActionServlet.java&#58;432&#41;
javax.servlet.http.HttpServlet.service&#40;HttpServlet.java&#58;709&#41;
javax.servlet.http.HttpServlet.service&#40;HttpServlet.java&#58;802&#41;
root cause

java.lang.NullPointerException
org.apache.struts.taglib.tiles.InsertTag.processName&#40;InsertTag.java&#58;527&#41;
org.apache.struts.taglib.tiles.InsertTag.createTagHandler&#40;InsertTag.java&#58;482&#41;
org.apache.struts.taglib.tiles.InsertTag.doStartTag&#40;InsertTag.java&#58;43
org.apache.jsp.view.usuarioNovo_jsp._jspx_meth_tiles_get_0&#40;org.apache.jsp.view.usuarioNovo_jsp&#58;185&#41;
org.apache.jsp.view.usuarioNovo_jsp._jspService&#40;org.apache.jsp.view.usuarioNovo_jsp&#58;114&#41;
org.apache.jasper.runtime.HttpJspBase.service&#40;HttpJspBase.java&#58;97&#41;
javax.servlet.http.HttpServlet.service&#40;HttpServlet.java&#58;802&#41;
org.apache.jasper.servlet.JspServletWrapper.service&#40;JspServletWrapper.java&#58;332&#41;
org.apache.jasper.servlet.JspServlet.serviceJspFile&#40;JspServlet.java&#58;314&#41;
org.apache.jasper.servlet.JspServlet.service&#40;JspServlet.java&#58;264&#41;
javax.servlet.http.HttpServlet.service&#40;HttpServlet.java&#58;802&#41;
org.apache.struts.action.RequestProcessor.doForward&#40;RequestProcessor.java&#58;1085&#41;
org.apache.struts.tiles.TilesRequestProcessor.doForward&#40;TilesRequestProcessor.java&#58;263&#41;
org.apache.struts.action.RequestProcessor.internalModuleRelativeForward&#40;RequestProcessor.java&#58;1023&#41;
org.apache.struts.tiles.TilesRequestProcessor.internalModuleRelativeForward&#40;TilesRequestProcessor.java&#58;345&#41;
org.apache.struts.action.RequestProcessor.processValidate&#40;RequestProcessor.java&#58;98
org.apache.struts.action.RequestProcessor.process&#40;RequestProcessor.java&#58;207&#41;
org.apache.struts.action.ActionServlet.process&#40;ActionServlet.java&#58;1196&#41;
org.apache.struts.action.ActionServlet.doPost&#40;ActionServlet.java&#58;432&#41;
javax.servlet.http.HttpServlet.service&#40;HttpServlet.java&#58;709&#41;
javax.servlet.http.HttpServlet.service&#40;HttpServlet.java&#58;802&#41;

[size="11"][color="red"]* Editado: Lembre-se de utilizar BBCode em seus códigos - marcossousa[/color][/size] :joia:

L

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&#40; '/rhmasterweb/estilos/default.css' &#41;;#/style#
#html&#58;html locale="true"#
#head#
#title##bean&#58;message key="erro.titulo"/##/title#
#html&#58;base/#
#/head#
#body#
    #center#
    #blockquote#
        #h1##font size="30"##bean&#58;message key="erro.titulo"/##/font##/h1#
        #table##tr##td#
        #logic&#58;messagesPresent#
            #ul#
                #html&#58;messages id="error"#
                    #li##h3##bean&#58;write name="error"/##/h3##/li#
                #/html&#58;messages#
            #/ul#
        #/logic&#58;messagesPresent#
		#/td##/tr##/table#
    #/blockquote#
    #br/#
    #html&#58;button property="voltar" onclick="javascript&#58;history.go&#40;-1&#41;;" styleId="voltar" styleClass="botao"##bean&#58;message key="prompt.voltar"/##/html&#58;button#
    #/center#
#/body#
#/html&#58;html#

Eu vou adicionando e lançando os erros assim:

errors.add&#40; ActionErrors.GLOBAL_ERROR, new ActionError&#40;"errors.slfam.duplicado"&#41;&#41;;
...
if&#40; !errors.isEmpty&#40;&#41; &#41; &#123;
    		saveErrors&#40; request, errors &#41;;
    		System.out.println&#40;"****** error ******"&#41;;
    		System.out.println&#40; errors.hashCode&#40;&#41; &#41;;
    		System.out.println&#40; errors.size&#40;&#41; &#41;;
    		System.out.println&#40; errors.toString&#40;&#41; &#41;;
    		return &#40; mapping.findForward&#40;"error"&#41; &#41;;
    	&#125; else &#123;
    		return &#40; mapping.findForward&#40;"success"&#41; &#41;;
    	&#125;
Criado 26 de maio de 2006
Ultima resposta 1 de jun. de 2006
Respostas 2
Participantes 2