现有的Struts1项目未加载Struts2的TilesPlugin

问题描述

我正在将Struts1迁移到Struts2,组件之一是Struts1版本的TilesPlugin。 我已经阅读了Struts2 tile-plugin实现的说明,并按照这些步骤进行操作,但是发现它没有按预期加载配置。这是链接https://struts.apache.org/plugins/tiles/

问题是我需要知道如何与Struts1的现有TilesPlugin一起实现Struts2的tiles-plugin新版本。 (我不能同时迁移所有操作以使用更新的Tiles-plugin,这需要做很多工作)

pom.xml (我仅添加struts2-tiles-plugin,但在运行时出错,然后添加slf4j解决了该问题)

<dependency>
  <groupId>org.apache.struts</groupId>
  <artifactId>struts2-tiles-plugin</artifactId>
  <version>${struts2.version}</version>
  <exclusions>
    <exclusion>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
    </exclusion>
    <exclusion>
      <groupId>org.slf4j</groupId>
      <artifactId>jcl-over-slf4j</artifactId>
    </exclusion>
  </exclusions>
</dependency>
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>${slf4j.version}</version>
  <scope>provided</scope>
</dependency>
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
  <version>${slf4j.version}</version>
  <scope>provided</scope>
</dependency>
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>jcl-over-slf4j</artifactId>
  <version>${slf4j.version}</version>
  <scope>provided</scope>
</dependency>
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>jul-to-slf4j</artifactId>
  <version>${slf4j.version}</version>
  <scope>provided</scope>
</dependency>
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>log4j-over-slf4j</artifactId>
  <version>${slf4j.version}</version>
  <scope>provided</scope>
</dependency>

tiles.xml

<tiles-deFinitions>
  <deFinition name="baseLayout" template="/WEB-INF/path/to/layout.jsp">
    <put-attribute name="title" value="default title layout" />
  </deFinition>

  <deFinition name="page1" extends="baseLayout">
    <put-attribute name="title" value="page 1 title" />
    <put-attribute name="body" value="/WEB-INF/view/page1.jsp" />
    <put-attribute name="js" value="/WEB-INF/view/include/include_js.jsp" />
  </deFinition>

</tiles-deFinitions>

web.xml 添加到现有文件的开头)

  <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>

struts.xml (将其添加<package>标记内)

<result-types>
  <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"/>
</result-types>

type="tiles"属性添加到目标<result>

struts-config.xml (这是Struts1配置,并且存在struts1-tiles-plugin)

<plug-in className="org.apache.struts.tiles.TilesPlugin">
    <set-property property="deFinitions-config" value="/WEB-INF/tiles-def.xml" />
    <set-property property="deFinitions-debug" value="2" />
    <set-property property="deFinitions-parser-details" value="2" />
    <set-property property="deFinitions-parser-validate" value="true" />
</plug-in>

layout.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="EUC-JP" session="true" %>

<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<%@ taglib prefix="s" uri="/struts-tags" %>

<html>
<head>
  <Meta http-equiv="Content-Type" content="text/html; charset=x-euc-jp">
  <Meta http-equiv="Content-Language" content="ja">
  <title><tiles:getAsstring name="title"/></title>
  <tiles:insertAttribute name="js"/>
</head>

<tiles:insertAttribute name="body"/>
</html>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)