瓷砖 2 通配符删除重复不起作用 [英] Tiles 2 Wildcard to remove duplicate not working
问题描述
我在我的项目中使用 Spring、Struts 2 和 Tiles 2,我试图在这里使用通配符从这里删除我的设置中的重复
I'm using Spring, Struts 2, and Tiles 2 in my project and I'm trying to use wildcard notation here to remove the duplicate in my setup from here
<definition name="home-template1" template="/WEB-INF/jsp/templates/template1.jsp">
<put-attribute name="banner" value="/WEB-INF/jsp/sitePages/banner.jsp" />
<put-attribute name="header" value="/WEB-INF/jsp/sitePages/header.jsp" />
<put-attribute name="body" value="/WEB-INF/jsp/sitePages/body.jsp" />
<put-attribute name="archive" value="/WEB-INF/jsp/sitePages/archive.jsp" />
<put-attribute name="footer" value="/WEB-INF/jsp/sitePages/footer.jsp" />
</definition>
<definition name="home-template2" template="/WEB-INF/jsp/templates/template2.jsp">
<put-attribute name="banner" value="/WEB-INF/jsp/sitePages/banner.jsp" />
<put-attribute name="header" value="/WEB-INF/jsp/sitePages/header.jsp" />
<put-attribute name="body" value="/WEB-INF/jsp/sitePages/body.jsp" />
<put-attribute name="archive" value="/WEB-INF/jsp/sitePages/archive.jsp" />
<put-attribute name="footer" value="/WEB-INF/jsp/sitePages/footer.jsp" />
</definition>
<definition name="home-template3" template="/WEB-INF/jsp/templates/template3.jsp">
<put-attribute name="banner" value="/WEB-INF/jsp/sitePages/banner.jsp" />
<put-attribute name="header" value="/WEB-INF/jsp/sitePages/header.jsp" />
<put-attribute name="body" value="/WEB-INF/jsp/sitePages/body.jsp" />
<put-attribute name="archive" value="/WEB-INF/jsp/sitePages/archive.jsp" />
<put-attribute name="footer" value="/WEB-INF/jsp/sitePages/footer.jsp" />
</definition>
到
<definition name="home-*" template="/WEB-INF/jsp/templates/{1}.jsp">
<put-attribute name="banner" value="/WEB-INF/jsp/sitePages/banner.jsp" />
<put-attribute name="header" value="/WEB-INF/jsp/sitePages/header.jsp" />
<put-attribute name="body" value="/WEB-INF/jsp/sitePages/body.jsp" />
<put-attribute name="archive" value="/WEB-INF/jsp/sitePages/archive.jsp" />
<put-attribute name="footer" value="/WEB-INF/jsp/sitePages/footer.jsp" />
</definition>
但是瓷砖给了我以下错误:
but tiles gives me the following error:
org.apache.tiles.definition.NoSuchDefinitionException: home-template2
下面是我的 struts.xml
文件,其中仅包含调用它的两个操作
below is my struts.xml
file snipped with only the two action responsible for calling it
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
"http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<constant name="struts.enable.SlashesInActionNames" value="true"/>
<constant name="struts.mapper.alwaysSelectFullNamespace" value="false"/>
<constant name="struts.action.extension" value=","/>
<package name="test" extends="struts-default" namespace="/">
<result-types>
<result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" />
</result-types>
<action name="checkBlogUrl" class="checkBlogUrl">
<result name="success" type="redirectAction">
<param name="actionName">postPreview</param>
<param name="nextAction">${nextAction}</param>
<param name="blogSiteUrl">${blogSiteUrl}</param>
</result>
<result name="error">/WEB-INF/jsp/cmsPages/index.jsp</result>
</action>
<action name="postPreview" class="blogPostAction">
<result name="success" type="tiles">${nextAction}</result>
</action>
</package>
</struts>
示例网址调用:
mycms:8080/CMS/postPreview?nextAction=home-template2&blogSiteUrl=qsdcza
(注意:我去掉了Struts的扩展名.action/.do
)
(Note: I removed the extension .action/.do
of Struts)
另外,我可以在扩展中使用通配符吗?例如:
also, can I use the wildcards in the extension? eg:
<definition name="about-*" extends="home-*">
<put-attribute name="body" value="/WEB-INF/jsp/sitePages/about.jsp" />
</definition>
想自己尝试,但不能使基本的通配符工作.
want to it myself try but can't make the basic wildcard work.
推荐答案
默认情况下,Tiles 2.2 支持定义名称中的通配符.通配符在编写更少的代码来声明定义方面有很大帮助.
By default, Tiles 2.2 supports wildcards in definition names. Wildcards help a lot in writing less code to declare your definitions.
要更好地使用 Tiles 和 Struts2,请参阅 Tiles 2.2.2 整合.
For better usage of Tiles and Struts2 see Tiles 2.2.2 Integration.
您可以像这样使用磁贴定义
You can use tiles definition like this
<definition name="home*" template="/WEB-INF/jsp/templates/{1}.jsp">
<put-attribute name="banner" value="/WEB-INF/jsp/sitePages/banner.jsp" />
<put-attribute name="header" value="/WEB-INF/jsp/sitePages/header.jsp" />
<put-attribute name="body" value="/WEB-INF/jsp/sitePages/body.jsp" />
<put-attribute name="archive" value="/WEB-INF/jsp/sitePages/archive.jsp" />
<put-attribute name="footer" value="/WEB-INF/jsp/sitePages/footer.jsp" />
</definition>
这篇关于瓷砖 2 通配符删除重复不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!