我正在从 Struts 2.5.33 迁移到 Struts 6.4.0。 按照 https://cwiki.apache.org/confluence/display/WW/Struts+2.5+to+6.0.0+migration 的指南进行操作后,应用程序无法显示主页,因为 NullPointerException,这是由于ActionContext.getContext() 在 Struts 代码中返回 null。
在JSP页面中打印出ActionContext.getContext()的值,迁移前不为null,迁移后为null。
我遵循了https://cwiki.apache.org/confluence/display/WW/Struts+2.5+to+6.0.0+migration的所有迁移步骤。
任何想法都非常感激。谢谢。
上述错误的根本原因是
org.apache.tiles.definition.NoSuchDefinitionException: Cannot find definition named 'loginForm'
at org.apache.tiles.impl.mgmt.CachingTilesContainer.render(CachingTilesContainer.java:123) ~[tiles-core-3.0.8.jar:3.0.8]
解决方案: 将以下内容添加到 web.xml 中
<context-param>
<param-name>org.apache.tiles.definition.DefinitionsFactory.DEFINITIONS_CONFIG</param-name>
<param-value>/WEB-INF/tiles.xml</param-value>
</context-param>
https://lists.apache.org/thread/zoysvnb52zk4kv5rg445r5bd8rkn7hto https://issues.apache.org/jira/browse/WW-5419