我正在对一个非常旧的Java项目进行更新转换,并在Spring Boot下进行转换。但是,我在渲染首页时遇到了困难,因为它们是使用 Struts 2
.ftl
s 和 Apache Tiles 构建的。
由于某种原因,我收到此错误:
JspTaglib [“
”]未定义:它不能分配给图块http://tiles.apache.org/tags-tiles
当它尝试加载页面时,无法将其分配给图块。
我已经检查过,我拥有所有必需的
jar
文件(我认为?),但因为我根本不熟悉 .ftl
或图块。我无法帮助自己找出问题所在。
依赖关系:
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-core</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-api</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-jsp</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.1.8.1</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-tiles-plugin</artifactId>
<version>2.1.8</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.15</version>
</dependency>
我像这样将图块分配给页面
<#assign tiles=JspTaglibs["http://tiles.apache.org/tags-tiles"]>
<@tiles.insertAttribute name="navigation" />
<@tiles.insertAttribute name="body" />
将此添加到您的
web.xml
或使用 Spring Boot 引导此 servlet。
<servlet>
<servlet-name>jspSupportServlet</servlet-name>
<servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class>
<load-on-startup>5</load-on-startup>
</servlet>
需要在Struts 2中将Freemarker与Tiles集成。
您可以使用struts-examplestiles项目来演示这种集成。还要升级到最新的 Struts 版本。
您可以在
pom.xml
中找到该项目的合理部分。
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<struts2.version>2.5.8</struts2.version>
</properties>