Ajuda - Problemas ao utilizar biblioteca - Tiles

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]
					</tr>
				</table>
				</td>					
			</tr>
			<tr>
				<td valign="top">&nbsp;</td>
				<td valign="top">&nbsp;</td>
				<td valign="top">
				<div align="center"></div>
				</td>
			</tr>
		</table>
		</td>
	</tr>
</table>
</td>
</tr>
<tr>
	[b]<tiles:insert	attribute="footer" />[/b]
</tr>
[b][/b]

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.