Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

Struts 2.0.0 is the first distribution of WebWork 2 as an Apache Struts product.

  • If you are a Maven developeruser, you might want to get started using the Maven Archetype.
  • Another quick-start entry point is the blank application. Rename and deploy the WAR as a starting point for your own development.

...

Code Block
<dependency>
  <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
      <version>2.0.0-SNAPSHOT<0</version>
</dependency>

Struts Configuration DTD XML

Code Block

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <include file="struts-default.xml"/>
    <package name="support" extends="struts-default">
        <action name="$name" class="$class">
            <result>$location</result>
        </action>
    </package>
</struts>

XWork Validation XML

Code Block

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC 
   "-//OpenSymphony Group//XWork Validator 1.0.2//EN" 
   "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
    <field name="$name">
        <field-validator type="$type">
            <message>$message</message>
        </field-validator>
    </field>
</validators>

New Features and Extensions

  • Can we use Acegi Security with the framework extension is available.
  • CheckBox Interceptor detects unchecked checkboxes and adds a parameter with a default value (usually 'false') .
  • JavaServer Faces extension is available.
  • A struts.xml file can be placed in a JAR and automatically plugged into an application, so that modules can be self-contained and automatically configured.
    • In the case of Freemarker and Velocity modules, the templates can also be loaded from the classpath, so the entire module can be plugged in as a single JAR.
  • (warning) Debug Interceptor DebuggingInterceptor displays the value stack at runtime.

...

  • Struts 2 is dependant on XWork 2 (nightly build).
  • Java 1.5 is required to build and deploy Struts 2.
    • For Java 1.4 deployments, RetroWeaver or RetroTranslater may be used to provide Java 1.4 support
    • A pre-packaged set of RetroTranslator JARs are is being provided with the distribution.

For other changes from WebWork 2, see the "Members to rename", "New property settings", "New featrues features or feature changes", and "Removed or deprecated".

...

  • Various changes to ConfigurationManager
    • ConfigurationManager is no longer a static factory. It is now an instance created through Dispatcher. Custom configuration could be done through DispatcherListener.
    • Custom configuration to ConfigurationManager and Configuration cannot be done statically anymore, instead use Dispatcher's DispatcherListener to achieve the same effect.
  • The prepare interceptor now uses reflection to call prepare_Method_ where method is the action method configured for the particular action in struts.xml.
    Code Block
       <action name="myAction" method="insert" ....>
         .....
       </action>
    
       // with the above configuration, and PrepareInterceptor in play, 
       // callsequence will be 
       1] prepareInsert() (If it exists)
       2] prepare() (Unless Interceptor's alwaysInvokePrepare parameter is set to false)
       3] insert()
    
  • DefaultWorkflowInterceptor (named workflow in struts-default.xml) now uses reflection to call validateMethod on the action class that implements Validateable interface where method is the action method configured for the particular action in struts.xml.
    Code Block
    <action name="myAction" method="insert" ...>
           ...
        </action>
    
        // with the above configuration, and DefaultWorkflowInterceptor in play, 
        // call sequence for action that implements Validateable interface will be 
        1] validateInsert()
        2] validate() (unless Interceptor's alwaysInvokeValidate parameter is set to false)
        3] insert()
    
  • Datepicker tag is now using dojo's (limited in terms functionality and internationalization)
  • Tiles integration extension is available.
  • Wildcards can be specified in action mappings.
  • MessageStoreInterceptor is introduced to allow field errors / action errors and messages to be store and retrieve through session, resulting them to be preservable across request.

...

Pending and open issues

Jira Issues
columnstype; key; summary; status; resolution
urlhttps://issues.apache.org/struts/secure/IssueNavigator.jspa?view=rss&&pid=10030&fixfor=21510&status=1&status=3&status=4&sorter/field=priority&sorter/order=DESC&tempMax=250&reset=true&decorator=nonecolumnstype; key; summary; status; resolution

Other resources