Преобразование существующего веб-приложения Simple JSP Tiles 2.2 в архитектуру Tiles 3.0

Я хочу создать простое веб-приложение JSP-плитки 3.0. У меня есть заголовок, нижний колонтитул, меню и тело для загрузки 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
 <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<tiles:insertDefinition name="page" />
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" />

веб.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>

And this is the error that I've got in the browser

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, но я не могу понять, что мне делать.


person D.Andreea    schedule 11.06.2013    source источник
comment
Разницы между плитками2 и плитками3 почти нет, у плиток3, конечно, есть расширение функций... Я не знаю, почему вы говорите о невозможности использовать веб-фреймворки, звучит как глупое требование, но не имеет никакого отношения к проблема. Вы используете мавен? Возможно, отсутствует зависимость... по какой причине вы не используете org.apache.tiles.extras.complete.CompleteAutoloadTilesListener в web.xml?   -  person Quaternion    schedule 14.06.2013
comment
Что пытается сделать index.jsp? tiles:insertDefinition предназначен для создания нового определения¹, но вы уже определили определение страницы в файлеtiles.xml¹ tiles.apache.org/framework/tiles-jsp/   -  person mck    schedule 18.06.2013
comment
I'm not allowed to use frameworks -- Вы же понимаете, что Tiles сам по себе является фреймворком? I create the war using "MyAnt generate.war" -- Это просто название задачи в вашем скрипте сборки, бессмысленное для всех остальных.   -  person Dave L.    schedule 22.07.2013


Ответы (1)


Класс со Struts: org.apache.tiles.web.startup.TilesServlet Класс без Struts: org.apache.struts.tiles.TilesServlet

person Jagrutee Mahajan    schedule 12.12.2014