问题描述
在https://cwiki.apache.org/confluence/display/WW/Struts+2.3+to+2.5+migration之后,在使用Tiles的旧版JBoss EAP应用程序上将Struts版本从2.3升级到2.5。由于某种原因,带有通配符(**)的Tiles定义现在会导致org.apache.tiles.deFinition.NoSuchDeFinitionException。这似乎与SMI无关,因为如果我对定义进行硬编码,链接就会起作用。
struts.xml中的示例:
<action name="caralist" class="com.foobar.ListAction">
<result name="success" type="tiles">/list.${#request.title}.tiles</result>
<result name="detail" type="tiles">/detail.tiles</result>
</action>
tiles.xml中的示例定义:
<deFinition name="/list.**.tiles" extends="baseLayout">
<put-attribute name="title" value="{1}" />
<put-attribute name="body" value="/gui/List.jsp" />
<put-attribute name="helpPage" value="List.html" />
</deFinition>
结果:
2020-10-08 17:38:54,031错误[http-0.0.0.0:8443-4] dispatcher.DefaultdispatcherErrorHandler(DefaultdispatcherErrorHandler.java:87)-处理请求期间发生异常:找不到名为'/ list的定义。 Foo Bar.tiles的
2020-10-08 17:38:54,044信息[stdout](http-0.0.0.0:8443-4)org.apache.tiles.deFinition.NoSuchDeFinitionException:找不到名为'/list.Foor Bar.tiles的定义'
2020-10-08 17:38:54,044信息[stdout](http-0.0.0.0:8443-4)在org.apache.tiles.impl.mgmt.CachingTilesContainer.render(CachingTilesContainer.java:123)〜 [tiles-core-3.0.8.jar:3.0.8]
2020-10-08 17:38:54,044信息[stdout](http-0.0.0.0:8443-4)在org.apache.struts2.views.tiles.TilesResult.doExecute(TilesResult.java:158)〜 [struts2-tiles-plugin-2.5.25.jar:2.5.25]
2020-10-08 17:38:54,044信息[stdout](http-0.0.0.0:8443-4)在org.apache.struts2.result.StrutsResultSupport.execute(StrutsResultSupport.java:206)〜[struts2 -core-2.5.25.jar:2.5.25]
2020-10-08 17:38:54,044信息[stdout](http-0.0.0.0:8443-4)位于com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:375)〜[struts2-core -2.5.25.jar:2.5.25]
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)