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 :
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 :
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>
/index.jsp
/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 <%@ 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>
tout est ok et les jsp sont bien affichées.
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>
MAIS quand je suis dans cette situation (fichier de configuration + inser dans la jsp) :
/index.jsp
/WEB-INF/tiles-defs.xml
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" />
J'ai une erreur du type suivant :
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>
(rien de plus dans les logs).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.
Pouvez-vous m'aider SVP ?
PPDL
Contexte :
- tomcat 5.5.17 / Windows
- Struts 1.2.7
Partager