Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Dependencies

Update Struts dependencies to 2.5.

Remove the following plugin dependencies because they were dropped and aren't supported anymore.

  • Dojo Plugin
  • Codebehind Plugin
  • JSF Plugin
  • Struts1 Plugin

Please be aware that the framework is using Log4j2 now as a main logging layer, the existing old logging layer is deprecated and will be removed soon. Log4j2 supports many different logging implementations, please check documentations for more details.

StrutsPrepareAndExecuteFilter

...

Code Block
languagexml
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">

HTML 5

All the core themes are now HTML 5 compliant which means using a required attribute in your tags will produce a proper browser's validation.

Tags attributes

The id attribute was replaced with var attribute in the following tags.

...


For additional info see WW-3909.

Tiles

Depending on from which version of struts you upgrade and whether you used tiles-plugin or tiles3-plugin you may need to do different steps.

Struts 2.5 just provides a tiles-plugin which uses Tiles3. So support for Tiles2 has been dropped as well as the name tiles3-plugin.

Now the only maven dependency looks like this:

Code Block
languagexml
titlemaven dependecy for tiles-plugin
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-tiles-plugin</artifactId>
            <version>${struts2.version}</version>
        </dependency>


You may need to update DTD in your tiles.xml files to Tiles3:

Code Block
languagexml
titletiles3 dtd
<!DOCTYPE tiles-definitions PUBLIC
       "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
       "http://tiles.apache.org/dtds/tiles-config_3_0.dtd">


A Listener in web.xml is required. It is not necessary to configure paths to tiles.xml files here as they are picked up automatically.

Code Block
languagexml
titleStrutsTilesListener in web.xml
<listener>
  <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
</listener>


Optionally you may remove TilesDefinitions from XML and annotate actions instead. See Tiles Plugin for more details.

Temp/Work directory of ApplicationServer/ServletContainer

Users reported it was necessary for them to remove temp/work directory of their ApplicationServer/ServletContainer. Likely to force server to recompile JSPs.

New Locale aware conversion logic

As from Struts 2.5.12 a new conversion logic was introduced which can affect your applications when using uncommon solutions. One of these is to use a number literals in Freemarker template. In such case Freemarker treats them as numbers (as BigDecimals) and Struts logic converts them to a string with decimal zero, see the example below:

Code Block
languagexml
<@s.textfield name="userId" value=35/>

this snippet will produce the following Html control:

Code Block
html
html
<input type="text" name="userId" value="35.0"/>

To resolves this problem you must add quotes around the value:

Code Block
html
html
<@s.textfield name="userId" value="35"/>

This is due how Freemarker treats a number literals.