Struts2 如何将Struts 2与Tiles 3集成
如何将Struts 2与Tiles 3集成?struts2 tiles插件目前(2.3.4.1)与旧版本的tiles(2.0.6版)一起使用,这可能有点麻烦Struts2 如何将Struts 2与Tiles 3集成,struts2,tiles,tiles-3,Struts2,Tiles,Tiles 3,如何将Struts 2与Tiles 3集成?struts2 tiles插件目前(2.3.4.1)与旧版本的tiles(2.0.6版)一起使用,这可能有点麻烦 这是一个自我回答,帮助其他人进行集成。解决方案是添加所需的依赖项,使用适当的侦听器加载互动程序,并创建自定义结果类型。幸运的是,这些步骤非常简单,一旦完成,您就可以按照普通瓷砖2示例了解如何定义模板 1) 依赖项(从基本struts项目开始,但在本例中我将使用约定,因此最好添加struts2约定插件,它将包括struts2 core等):
这是一个自我回答,帮助其他人进行集成。解决方案是添加所需的依赖项,使用适当的侦听器加载互动程序,并创建自定义结果类型。幸运的是,这些步骤非常简单,一旦完成,您就可以按照普通瓷砖2示例了解如何定义模板 1) 依赖项(从基本struts项目开始,但在本例中我将使用约定,因此最好添加struts2约定插件,它将包括struts2 core等):
- 不包括struts2瓷砖插件
- groupId:org.apache.tiles,artifiactId:tiles-extras,版本:3.0.1
- groupId:org.slf4j,artifiactId:jcl-over-slf4j,版本:1.5.8
- groupId:org.slf4j,artifiactId:slf4j-jdk14,版本:1.5.8
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 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">
<listener>
<listener-class>org.apache.tiles.extras.complete.CompleteAutoloadTilesListener</listener-class>
</listener>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
4) 我们还需要告诉struts2我们的结果类型:
<?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.devMode" value="true" />
<constant name="struts.ui.theme" value="simple" />
<package name="tiles-package" namespace="" extends="struts-default">
<result-types>
<result-type default="true" name="tiles-result" class="com.quaternion.result.TilesResult"/>
</result-types>
</package>
</struts>
就是这样,这将允许您使用tiles 3+配置任何版本的struts2,有关更多配置详细信息,请参阅。多亏了Ken,Struts 2添加了一个新插件以支持tiles 3结果类型,它应该可以在即将发布的新版本Struts 2.3.9中使用
在tiles.xml中使用提到的doctype是的,我应该创建一个JIRA任务。。。这就是你的意思吗?在写之前的评论时,我还不知道你和struts dev的一个人是same@quaternion,太好了,谢谢。我一直在胡闹着把瓷砖绑到struts2大会上,这是可行的,但不太好。。。也许我也可以把它发送给你?请这样做,这是第一次尝试支持Tiles 3,所以我们可以用下一个版本来扩展它,因为。。。这个插件可以用更少的工作完成上述任务。
<?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.devMode" value="true" />
<constant name="struts.ui.theme" value="simple" />
<package name="tiles-package" namespace="" extends="struts-default">
<result-types>
<result-type default="true" name="tiles-result" class="com.quaternion.result.TilesResult"/>
</result-types>
</package>
</struts>
package com.quaternion.demo.action.test;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
@ParentPackage("tiles-package")
@Result(type="tiles-result", location="test.definition")
public class QuaternionResultTest extends ActionSupport{}
<!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN" "http://tiles.apache.org/dtds/tiles-config_3_0.dtd">