2012-09-21 187 views
1

我使用Hibernate框架創建了一個java web應用程序。 在WEB-INF,我創建了一個新的文件:瓷磚 - defs.xml,下面是它的內容:apache tiles 2 JSPException包括路徑

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE tiles-definitions PUBLIC 
    "-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN" 
    "http://tiles.apache.org/dtds/tiles-config_2_1.dtd"> 
<tiles-definitions> 
    <definition name="Page" template="/share/layout.jsp"> 
     <put-attribute name="title" value="Page" /> 
     <put-attribute name="header" value="/share/header.jsp" /> 
    </definition> 
    <definition name="Index" extends="Page"> 
     <put-attribute name="title" value="Vnmart" /> 
     <put-attribute name="main" value="/home/IndexContent.jsp"/> 
    </definition>  
</tiles-definitions> 

而且在web.xml中,我增加了一些行:

<context-param> 
    <param-name> 
     org.apache.tiles.definition.DefinitionsFactory.DEFINITIONS_CONFIG 
    </param-name> 
    <param-value> 
     /WEB-INF/tiles-defs.xml 
    </param-value> 
</context-param> 
<listener> 
    <listener-class>org.apache.tiles.web.startup.TilesListener</listener-class> 
</listener> 

在網頁文件夾中,我創建了包含2個jsp文件的主文件夾:Index.jsp和IndexContent.jsp。 的index.jsp:

<%@taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %> 
<tiles:insertDefinition name="Index"/> 

而且IndexContent.jsp:

<div>Home</div> 

在那之後,我創建了一個控制器封裝,並添加新的主頁的servlet:

String view = "home/Index.jsp"; 
RequestDispatcher rd = request.getRequestDispatcher(view); 
rd.forward(request, response); 

但是,當我跑,apache說:'HTTP狀態404 -/Project2 /'(Project2是項目名稱)。然後,我的Apache Tomcat日誌檢查,我發現了一個錯誤:

'SEVERE: Servlet.service() for servlet [Home] in context with path [/Project2] threw exception [org.apache.tiles.impl.CannotRenderException: JSPException including path '/layouts/layoutfront.jsp'.] with root cause javax.servlet.ServletException: File "/home/IndexContent.jsp" not found'

我沒有這個想法,我跟着一些教程如何與瓷磚的工作,但我仍然會被卡住。

+0

/home/IndexContent.jsp是否存在? – Satya

+0

是的,它的存在 – TPL

回答

10

這個問題被問了一年前,但如果有人遇到同樣的問題,這裏是我如何解決它。如果定義標籤的名稱參數和add-attribute標籤的值參數相同,我認爲它會引發一個stackoverflow錯誤消息。當我改變這些名字時,它對我來說工作得很好。

<definition name="Page" template="/share/layout.jsp"><put-attribute name="title" value="Page xyz" /> 
+0

謝謝你,我一直在爲這個問題而苦苦掙扎,你救了我一天。它是一個錯誤或其他東西。 –

+0

謝謝親愛的回答。這真是太棒了^ _ ^ –