apache tiles 2 JSPException包括path

2 java tomcat hibernate servlets tiles

我使用Hibernate框架创建了一个java Web应用程序.在WEB-INF中,我创建了一个新文件:tiles-defs.xml,下面是其中的内容:

<?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>
Run Code Online (Sandbox Code Playgroud)

在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>
Run Code Online (Sandbox Code Playgroud)

在网页文件夹中,我创建了包含2个jsp文件的主文件夹:Index.jsp和IndexContent.jsp.的index.jsp:

<%@taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %>
<tiles:insertDefinition name="Index"/>
Run Code Online (Sandbox Code Playgroud)

和IndexContent.jsp:

<div>Home</div>
Run Code Online (Sandbox Code Playgroud)

之后,我创建了一个控制器包,并添加了新的Home servlet:

String view = "home/Index.jsp";
RequestDispatcher rd = request.getRequestDispatcher(view);
rd.forward(request, response);
Run Code Online (Sandbox Code Playgroud)

但是当我跑步时,apache说:"HTTP状态404 - /Project2 /"(Project2是项目名称).然后,我检查了Apache Tomcat Log,发现了一个错误:

'SEVERE:servlet [Home]的Servlet.service()在路径[/ Project2]的上下文中引发异常[org.apache.tiles.impl.CannotRenderException:JSPException包括路径'/layouts/layoutfront.jsp'.]的根本原因javax.servlet.ServletException:找不到文件"/home/IndexContent.jsp"

我对此没有任何想法,我按照一些教程如何使用瓷砖,但我仍然卡住了.

小智 9

这个问题是在一年前被问到的,但是如果有人遇到同样的问题,那么我是如何修复它的.如果定义标记的name参数和add-attribute标记的value参数相同,我认为它会抛出stackoverflow错误消息.当我更改这些名称时,它对我来说很好.

<definition name="Page" template="/share/layout.jsp"><put-attribute name="title" value="Page xyz" />
Run Code Online (Sandbox Code Playgroud)