Ajuda com JSF

Pessoal, estou estudando JSF pelo livro Core JSF. Estou tentando implementar um exemplo sobre TILES do livro e está dando um erro que é o seguinte :

se alguém puder me ajudar…

[]'s Luis César

[code]exception

org.apache.jasper.JasperException: An exception occurred processing JSP page /ch08/book-viewer-tiles/book.jsp at line 24

21:
22: <f:subview id=“book”>
23: <h:form>
24: <tiles:insert definition=“book” flush=“false”/>
25: </h:form>
26: </f:subview>
27:

[/code]

[code]root cause

javax.servlet.ServletException: javax.servlet.jsp.JspException: Can’t get definitions factory from context.
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:850)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
org.apache.jsp.ch08.book_002dviewer_002dtiles.book_jsp._jspService(book_jsp.java:81)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:415)
com.sun.faces.application.ViewHandlerImpl.executePageToBuildView(ViewHandlerImpl.java:475)
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:143)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)

[/code]

cara posta seu codigo pra gente dar uma olhada

o arquivo book.jsp segue abaixo :

[code]<?xml version="1.0" ?>
<jsp:root version=“2.0”
xmlns:jsp=“http://java.sun.com/JSP/Page
xmlns:f=“http://java.sun.com/jsf/core
xmlns:h=“http://java.sun.com/jsf/html
xmlns:c=“http://java.sun.com/jsp/jstl/core
xmlns:tiles=“http://jakarta.apache.org/tiles”>
<jsp:directive.page contentType=“text/html”/>
<jsp:output omit-xml-declaration=“no”
doctype-root-element=“html”
doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
doctype-system=“http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”/>
<f:view>

<f:loadBundle basename=“com.corejsf.ch08.ex02.messages” var=“msgs”/>


<h:outputText value="#{msgs.bookWindowTitle}"/>

		<body>
			<f:subview id="book">
				<h:form>
					<tiles:insert definition="book" flush="false"/>
				</h:form>
			</f:subview>
		</body>
	</html>
</f:view>

</jsp:root>[/code]

o arquivo headerMenuContentLayout.jsp segue abaixo:

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://jakarta.apache.org/tiles" prefix="tiles" %>

<tiles:importAttribute scope="request"/>

<h:panelGrid columns="2" styleClass="#{gridClass}" headerClass="#{headerClass}" 
	columnClasses="#{menuColumnClass}, #{contentColumnClass}">
	<f:facet name="header">
		<f:subview id="header">
			<tiles:insert attribute="header" flush="false"/>
		</f:subview>
	</f:facet>
	
	<f:subview id="menu">
		<tiles:insert attribute="menu" flush="false"/>
	</f:subview>
	
	<f:subview id="content">
		<tiles:insert attribute="content" flush="false"/>
	</f:subview>
</h:panelGrid>

Alguém tem alguma idéia ?

Fazer essa integracao entre jSF e Tiles eh um porre. Mas segue um exemplo.

Lembro-me que obrigatoriamente no tiles-defs.xml tem que ter o name da definition terminada com .tiles, senao o tomahawk nao funciona. Esse código deve ter ± 1 ano e usa o tomahawk para fazer a ponte entre jsf e tiles. Talvez com o tiles 2 essa integracao seja mais facil. Acho que eh mais negocio dar uma olhada no facelets (http://facelets.dev.java.net/.

tiles-defs.xml:

<definition extends="template" name="/loja/paginas/produto/detalheProduto.tiles"> <put name="corpo" value="/loja/paginas/produto/detalheProduto.jsp"/> <put name="menuLateral" value="/loja/paginas/template/menuLateralCategorias.jsp"/> </definition>

faces-config.xml:

[code]

mostrarDetalheProduto
/loja/paginas/produto/detalheProduto.jsf


org.apache.myfaces.tomahawk.application.jsp.JspTilesViewHandlerImpl [/code]

template.jsp

[code]<%@ taglib uri=“http://java.sun.com/jsf/core” prefix=“f” %>
<%@ taglib uri=“http://java.sun.com/jsf/html” prefix=“h” %>
<%@taglib uri=“http://struts.apache.org/tags-tiles” prefix=“tiles” %>

		<TD width="108" height="26" valign="top">
		</TD>
	</TR>
	<TR>
		<TD height="26"></TD>
		<TD></TD>
		<TD height="26"></TD>
	</TR>
	<TR>
		<TD colspan="3" width="780" height="30">

		</TD>
	</TR>
	<TR>
		<tiles:insert name="rodape" flush="false"/>
	</TR>
</TABLE>
[/code]

Marco.

Obrigado pela resposta… Tenho mais uma pergunta: tiles é muito utilizado ? ou está em desuso ?

[]'s Luis Cesar

Tiles eh mais utilizado com Struts, pois era um subprojeto desse. Porem, agora virou um projeto separado e a tendencia eh que facilite a integracao com outros frameworks. O problema eh que os releases novos estao muito demorados.

Marco

Muito Obrigado pela atenção…

[]'s Luis Cesar