Estou com problemas ao utilizar a biblioteca do tiles:, erro:
java.lang.NullPointerException
org.apache.struts.taglib.tiles.InsertTag.processAttribute(InsertTag.java:687)
org.apache.struts.taglib.tiles.InsertTag.createTagHandler(InsertTag.java:478)
org.apache.struts.taglib.tiles.InsertTag.doStartTag(InsertTag.java:438)
org.apache.jsp.default_jsp._jspx_meth_tiles_insert_0(org.apache.jsp.default_jsp:181)
org.apache.jsp.default_jsp._jspService(org.apache.jsp.default_jsp:61)
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:322)
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)
Alguém poderia me ajudar neste caso? Já configurei o tiles-def.xml e a minha página mainlayout.jsp onde faço referências as declaradas no tiles, mas não sei porque ele não está conseguindo chamar na página.
Grato,
Renato.
Vc. provavelmente passou um atributo nulo para o tiles.
Se quiser ajuda, mande mais informações. Só o stack trace mostrando o NPE é muuuuuito pouco…
Arquivo de configuração do tiles: tiles-def.xml:
<?xml version="1.0" encoding="ISO-8859-1" ?>
Página que que faz referência aos definitions do tiles:mainlayout.jsp
<%@ taglib uri=“http://struts.apache.org/tags-tiles” prefix=“tiles”%>
<%@ taglib uri=“http://struts.apache.org/tags-html” prefix=“html”%>
<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>
[b][/b]
">
| [b][/b] |
|
|
| [b][/b] |
|
[b][/b]
|
</tr>
</table>
</td>
</tr>
<tr>
<td valign="top"> </td>
<td valign="top"> </td>
<td valign="top">
<div align="center"></div>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<tr>
[b]<tiles:insert attribute="footer" />[/b]
</tr>
|
|
|
Pela cara do problema, vc. está acessando a página JSP sem passar primeiro pelo controller do struts ou do tiles. Isto pode acontecer se o seu forward for do tipo “redirect”.
Neste cenário, não há um “tiles context” de onde puxar os atributos, e o resultado é este NPE.
Mas está configurado no arquivo do struts:
<?xml version="1.0" encoding="ISO-8859-1" ?>
e no arquivo web.xml:
<?xml version="1.0" encoding="UTF-8"?>
asul
action
org.apache.struts.action.ActionServlet
config
/WEB-INF/struts-config.xml
1
action
*.do
mainlayout.jsp
Seu welcomefile aponta direto para a página jsp.
Se vc. apontar o browser para a raiz da aplicação, o container vai entender como acesso à página jsp. Neste caso não passa pelo jsp.
Como regra geral, sugiro colocar seus JSPs em uma pasta que seja inacessível ao usuário. P.ex: /WEB-INF/jsp.
Seus redirects no struts-config devem usar a convenção “.definition” para mandar para uma definição do tiles, e no tiles-config vc. pode colocar o path “/WEB-INF/jsp/mainlayout.jsp” sem chance de um acesso direto quebrar as suas pernas.