3

我使用 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>

在 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。索引.jsp:

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

和 IndexContent.jsp:

<div>Home</div>

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

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

但是当我运行时,apache 说:'HTTP Status 404 - /Project2/'(Project2 是项目的名称)。然后,我检查了 Apache Tomcat Log,我发现了一个错误:

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

我对此一无所知,我遵循了一些如何使用瓷砖的教程,但我仍然被卡住了。

4

1 回答 1

9

这个问题是一年前提出的,但如果有人遇到同样的问题,我就是这样解决的。如果定义标签的名称参数和添加属性标签的值参数相同,我认为它会引发 stackoverflow 错误消息。当我更改这些名称时,对我来说效果很好。

<definition name="Page" template="/share/layout.jsp"><put-attribute name="title" value="Page xyz" />
于 2014-03-19T23:35:54.973 回答