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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
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