如何将Struts从V2.0迁移到V2.5

问题描述 投票:0回答:1

我们目前正在使用Struts2.0,并计划将其升级到2.5.X。是否有任何迁移过程可以帮助我直接升级到2.5.X?是因为V2.0的版本很旧,并且在以后的版本中实现了许多新功能。

有人建议不要直接迁移到2.5.X,因为发生了很多更改。但是,首先将其升级到2.3.X,然后再升级到2.5.X。

struts2 migration
1个回答
0
投票

我已经更新了我对上述问题的回答中的链接。但是,没有直接链接到迁移指南。如果可以帮助您进行迁移,则可以使用this链接。

Struts 2.3到2.5的迁移

StrutsPrepareAndExecuteFilterDTDHTML 5标签属性Div标签栏位名称瓷砖ApplicationServer / ServletContainer的Temp / Work目录新的区域设置感知转换逻辑依赖将Struts依赖项更新为2.5。

删除以下插件依赖项,因为它们已被删除并且不再受支持。

Dojo插件代码隐藏插件JSF插件Struts1插件请注意,该框架现在将Log4j2用作主要的日志记录层,不建议使用现有的旧日志记录层,并将很快将其删除。 Log4j2支持许多不同的日志记录实现,请查看文档以获取更多详细信息。

StrutsPrepareAndExecuteFilterorg.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter已移至org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter。

在web.xml中替换为:

Struts2的org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter带有:

Struts2的org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter软件包还有其他更改,请阅读版本说明2.5了解更多详细信息。

DTDStruts DTD已更新至2.5版本。

在struts.xml中替换2.3 DTD版本:

2.5:

HTML 5现在,所有核心主题都符合HTML 5规范,这意味着在标签中使用必需的属性将产生正确的浏览器验证。

标签属性在以下标记中,id属性已替换为var属性。

如果您的代码中有类似内容:

更改为:

标记名属性被var属性替换。

来自:

到:

另外,escape属性也重命名为escapeHtml属性。

来自:

到:

Div标签标签已删除。

替换为纯HTML标记。

字段名称如果您具有以单个小写字母开头的字段名称,例如:

private String sTrng;公共字符串getSTrng(){...}公共无效setSTrng(String str){...}

将accessors更改为getsTrng和setsTrng。

或者更好的是,将字段名称更改为不包含单个小写字母:

private String strng;公共字符串getStrng(){...}公共无效setStrng(String str){...}

有关其他信息,请参阅WW-3909。

瓷砖根据升级的Strut版本以及是否使用Tiles-plugin或Tiles3-plugin,您可能需要执行不同的步骤。

Struts 2.5仅提供使用Tiles3的tile-plugin。因此,已删除了对Tiles2的支持以及名称tile3-plugin的支持。

现在唯一的Maven依赖看起来像这样:

对瓦片插件的依赖org.apache.strutsStruts2的瓷砖,插件$ {} struts2.version

您可能需要将tile.xml文件中的DTD更新为Tiles3:

tiles3 dtd

需要web.xml中的侦听器。无需在此处配置tile.xml文件的路径,因为它们是自动拾取的。

web.xml中的StrutsTilesListenerorg.apache.struts2.tiles.StrutsTilesListener

[可选,您可以从XML中删除TilesDefinitions并注释操作。有关更多详细信息,请参见Tiles插件。

ApplicationServer / ServletContainer的Temp / Work目录用户报告说,他们有必要删除ApplicationServer / ServletContainer的temp / work目录。可能会强制服务器重新编译JSP。

了解新语言环境的转换逻辑从Struts 2.5.12开始,引入了新的转换逻辑,当使用不常见的解决方案时,该转换逻辑会影响您的应用程序。其中之一是在Freemarker模板中使用数字文字。在这种情况下,Freemarker将它们视为数字(如BigDecimals),并且Struts逻辑将其转换为带有十进制零的字符串,请参见以下示例:

此代码段将产生以下HTML控件:

要解决此问题,您必须在值周围添加引号:

这是由于Freemarker如何处理数字文字。

© www.soinside.com 2019 - 2024. All rights reserved.