【问题标题】:Converting an existing Simple JSP Tiles 2.2 webapp to Tiles 3.0 architecture将现有的 Simple JSP Tiles 2.2 webapp 转换为 Tiles 3.0 架构
【发布时间】:2013-06-11 16:54:04
【问题描述】:

我想创建一个简单的 JSP 瓦片 3.0 Web 应用程序。 我有一个页眉、页脚、菜单和一个正文来加载 jsps。 我的应用程序在瓷砖 2.2 中工作,但现在我正在尝试将其转换为瓷砖 3.0

我不允许使用框架。我使用 "MyAnt generate.war" 创建战争并使用 tomcat 进行部署。

这是我的瓦片定义文件 (tiles.xml)

    <!DOCTYPE tiles-definitions PUBLIC
       "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
       "http://tiles.apache.org/dtds/tiles-config_3_0.dtd">


<tiles-definitions>
  <definition name="page" template="/template.jsp">
    <put-attribute name="header" value="/defaultHeader.jsp" />
    <put-attribute name="menu" value="/defaultMenu.jsp" />
    <put-attribute name="body" value="/empty.jsp" />
    <put-attribute name="footer" value="/defaultFooter.jsp" />
  </definition>
  <definition name="servletPage" extends="page">
    <put-attribute name="body" value="/form.jsp" />
  </definition>

  <definition name="jspPage" extends="page">
    <put-attribute name="body" value="/hello.jsp" />
  </definition>
</tiles-definitions>

模板.jsp

 <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<html>
  <body style="width:100%;height:100%" bgcolor="Blue">
    <table border="1" cellspacing="0" cellpadding="0" style="width:100%;height:100%">
      <tr> <td colspan="2"><tiles:insertAttribute name="header" /> </td> </tr>
      <tr> <td>  <tiles:insertAttribute name="menu" /> </td>
           <td>  <tiles:insertAttribute name="body" /> </td>  </tr>
      <tr> <td colspan="2"> <tiles:insertAttribute name="footer" /> </td> </tr>
    </table>
  </body>
</html>

index.jsp

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

web.xml

<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
     version="2.5">
<servlet>
    <servlet-name>tiles</servlet-name>
    <servlet-class>org.apache.tiles.web.startup.TilesServlet</servlet-class>
    <init-param>
      <param-name>org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG</param-name>
      <param-value>/WEB-INF/tiles.xml</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
</servlet>
<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

这是我在浏览器中遇到的错误

HTTP Status 500 - An exception occurred processing JSP page /index.jsp at line 2 
org.apache.jasper.JasperException: An exception occurred processing JSP page /index.jsp at line 2

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

谁能帮我解决它?我很确定问题出在 web.xml 中,但我不知道该怎么办。

【问题讨论】:

  • tile2和tile3几乎没有区别,tile3当然有扩展功能……不知道你为什么提出不能使用web框架,听起来很傻要求,但与问题无关。你用的是maven吗?可能缺少依赖项...您有什么理由不在 web.xml 中使用“org.apache.tiles.extras.complete.CompleteAutoloadTilesListener”?
  • index.jsp 试图做什么? tiles:insertDefinition 用于创建新定义¹,但您已经在 tiles.xml 中定义了“页面”定义¹tiles.apache.org/framework/tiles-jsp/…
  • I'm not allowed to use frameworks -- 你意识到 Tiles 本身就是一个框架,对吧? I create the war using "MyAnt generate.war" -- 这只是你构建脚本中任务的名称,对其他人没有意义。

标签: tiles apache-tiles tiles-3


【解决方案1】:

对于 Struts,类是:org.apache.tiles.web.startup.TilesServlet 没有 Struts 的类是:org.apache.struts.tiles.TilesServlet

【讨论】:

    猜你喜欢
    • 2015-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-20
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    相关资源
    最近更新 更多