[Tiles] Problème de fichier de configuration ?
Bonjour.
J'essaye de jouer avec tiles. Jusque là tout semble bien fonctionner tant que je n'utilise pas le fichier tiles-defs.xml qui centralise les définitions.
Je déclare dans mon struts-config.xml :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<data-sources />
<form-beans />
<global-exceptions />
<global-forwards >
</global-forwards>
<action-mappings >
</action-mappings>
<controller processorClass="org.apache.struts.tiles.TilesRequestProcesor" bufferSize="4096" />
<message-resources parameter="com.iscdinformatique.plans.struts.ApplicationResources" />
<plug-in className="org.apache.struts.tiles.TilesPlugin">
<set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />
</plug-in>
</struts-config> |
J'ai 2 jsp (/index.jsp et /login.jsp) et un template (dans /WEB-INF/layout/template-01.jsp). Quand les JSPs sont sous la forme :
/index.jsp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<tiles:insert page="/WEB-INF/layout/template-01.jsp">
<tiles:put name="top" value="/WEB-INF/atom/top-off.jsp" />
<tiles:put name="head" value="/WEB-INF/atom/head.jsp" />
<tiles:put name="menu" value="/WEB-INF/atom/menu-off.jsp" />
<tiles:put name="main" value="/WEB-INF/atom/main-welcome.jsp" />
<tiles:put name="footer" value="/WEB-INF/atom/footer.jsp" />
</tiles:insert> |
/WEB-INF/layout/template-01.jsp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html lang="true">
<head>
<html:base />
<title><bean:message key="app.name" /></title>
<link rel="stylesheet" type="text/css" href="/plans/css/bby.css">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="...">
<meta http-equiv="description" content="Une belle description :)">
</head>
<body>
<tiles:insert attribute="top" />
<tiles:insert attribute="head" />
<tiles:insert attribute="menu" />
<tiles:insert attribute="main" />
<tiles:insert attribute="footer" />
</body>
</html:html> |
tout est ok et les jsp sont bien affichées.
MAIS quand je suis dans cette situation (fichier de configuration + inser dans la jsp) :
/index.jsp
Code:
1 2 3 4 5 6 7 8 9
|
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<tiles:insert definition="index.page" /> |
/WEB-INF/tiles-defs.xml
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration//EN" "http://struts.apache.org/dtds/tiles-config_1_3.dtd">
<tiles-definitions>
<definition name=".calque" path="/WEB-INF/layout/template-01.jsp">
<put name="top" value="/WEB-INF/atom/top-off.jsp" />
<put name="head" value="/WEB-INF/atom/head.jsp" />
<put name="menu" value="/WEB-INF/atom/menu-off.jsp" />
<put name="main" value="/WEB-INF/atom/main-welcome.jsp" />
<put name="footer" value="/WEB-INF/atom/footer.jsp" />
</definition>
<definition name="login.page" extends=".calque">
<put name="main" value="/WEB-INF/atom/main-login-form.jsp"/>
</definition>
<definition name="index.page" extends=".calque">
<put name="main" value="/WEB-INF/atom/main-home.jsp"/>
</definition>
</tiles-definitions> |
J'ai une erreur du type suivant :
Citation:
Etat HTTP 500 -
type Rapport d'exception
message
description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.
exception
org.apache.jasper.JasperException: Exception in JSP: /index.jsp:9
6: <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
7: <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
8:
9: <tiles:insert definition="index.page" />
10:
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:504)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
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)
cause mère
javax.servlet.ServletException: Can't get definitions factory from context.
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:858)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
org.apache.jsp.index_jsp._jspService(index_jsp.java:69)
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)
cause mère
javax.servlet.jsp.JspException: Can't get definitions factory from context.
org.apache.struts.taglib.tiles.InsertTag.processDefinitionName(InsertTag.java:577)
org.apache.struts.taglib.tiles.InsertTag.createTagHandler(InsertTag.java:476)
org.apache.struts.taglib.tiles.InsertTag.doStartTag(InsertTag.java:438)
org.apache.jsp.index_jsp._jspx_meth_tiles_insert_0(index_jsp.java:85)
org.apache.jsp.index_jsp._jspService(index_jsp.java:60)
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)
note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/5.5.17.
(rien de plus dans les logs).
Pouvez-vous m'aider SVP ?
PPDL
Contexte :
- tomcat 5.5.17 / Windows
- Struts 1.2.7