Apache Tiles issue-org.апаш.плитка.JSP-страница.библиотека тегов.InsertAttributeTag не может быть приведен к javax.сервлет.JSP-страница.tagext.Метка


Я попытался использовать плитки 2.2.2 с распорками 2. Я включил все необходимые банки (связанные с плитками, Struts2 и плагином Struts2 tiles) в проект.

commons-beanutils-1.8.0.jar
commons-collections-3.1.jar
commons-digester-2.0.jar
commons-fileupload-1.3.jar
commons-io-2.0.1.jar
commons-lang-2.4.jar
commons-lang3-3.1.jar
commons-logging-1.1.3.jar
freemarker-2.3.19.jar
javassist-3.11.0.GA.jar
ognl-3.0.6.jar
slf4j-api-1.5.8.jar
slf4j-jdk14-1.5.8.jar
struts2-core-2.3.15.jar
struts2-tiles-plugin-2.3.15.jar
tiles-api-2.2.2.jar
tiles-compat-2.2.2.jar
tiles-core-2.2.2.jar
tiles-jsp-2.2.2.jar
tiles-servlet-2.2.2.jar
tiles-template-2.2.2.jar
xwork-core-2.3.15.jar

Плитки.xml

<?xml version="1.0" encoding="UTF-8" ?>

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

<tiles-definitions>

<definition name="baseLayout" template="/BaseLayout.jsp">
    <put-attribute name="title" value="" />
    <put-attribute name="header" value="/Header.jsp" />
    <put-attribute name="menu" value="/Menu.jsp" />
    <put-attribute name="body" value="" />
    <put-attribute name="footer" value="/Footer.jsp" />
</definition>

<definition name="/welcome.tiles" extends="baseLayout">
    <put-attribute name="title" value="Welcome" />
    <put-attribute name="body" value="/Welcome.jsp" />
</definition>

<definition name="/employee.tiles" extends="baseLayout">
    <put-attribute name="title" value="Employee Form" />
    <put-attribute name="body" value="/Employee.jsp" />
</definition>
<definition name="/employee.success.tiles" extends="baseLayout">
    <put-attribute name="title" value="Employee Added" />
    <put-attribute name="body" value="/SuccessEmployee.jsp" />
</definition>

</tiles-definitions>

Паутина.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:javaee="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" id="WebApp_9" version="2.4">
  <javaee:display-name>Apache Tiles framework</javaee:display-name>
  <listener>
    <listener-class>
            org.apache.struts2.tiles.StrutsTilesListener
        </listener-class>
  </listener>
  <context-param>
    <param-name>tilesDefinitions</param-name>
    <param-value>/WEB-INF/tiles.xml</param-value>
  </context-param>
  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>
            org.apache.struts2.dispatcher.FilterDispatcher
        </filter-class>
  </filter>
  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <welcome-file-list>
    <welcome-file>Login.jsp</welcome-file>
  </welcome-file-list>
</web-app>

Распорки.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
    <constant name="struts.enable.DynamicMethodInvocation"
        value="false" />
    <constant name="struts.devMode" value="false" />
    <constant name="struts.custom.i18n.resources"
        value="ApplicationResources" />

    <package name="default" extends="struts-default" namespace="/">
        <result-types>
            <result-type name="tiles"
                class="org.apache.struts2.views.tiles.TilesResult" />
        </result-types>
        <action name="login" 
            class="com.teg.tiles.LoginAction">
            <result name="success" type="tiles">/welcome.tiles</result>
            <result name="error">Login.jsp</result>
        </action>
        <action name="employee" 
            class="com.teg.tiles.EmployeeAction">
            <result name="success" type="tiles">/employee.success.tiles</result>
            <result name="input" type="tiles">/employee.tiles</result>
        </action>
        <action name="employee-form">
            <result name="success" type="tiles">/employee.tiles</result>
        </action>
    </package>
</struts>

При попытке запустить проект я получил следующее исключение.

Java.яз..ClassCastException: org.апаш.плитка.JSP-страница.библиотека тегов.InsertAttributeTag не может быть приведен к javax.сервлет.JSP-страница.tagext.Tag

Пожалуйста, помогите мне устранить проблему.

3 4

3 ответа:

Я столкнулся с той же самой проблемой, проблема в моем случае заключалась в том, что JSP не перекомпилировался, а Tomcat повторно использовал ту же копию в каталоге work. Очистка каталога work и повторное развертывание решили эту проблему для меня. Надеюсь, это поможет!

Вопрос решен. Проблема заключалась в DTD в плитках.XML. Я изменил DTD на <!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN" "http://tiles.apache.org/dtds/tiles-config_2_1.dtd"> и он работает нормально.

Плитки 2.2.2 insertAttribute
больше не принимает аргумент типа 'ignore= "true". Удалите аргументы или используйте insertTemplate: http://tiles.apache.org/2.2/framework/tiles-jsp/tlddoc/tiles/insertTemplate.html