Versions Compared

Key

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

The example code for this tutorial, preparable_interface, is available for checkout from httpat https://strutsgithub.com/apache.org/2.3.1.2/docs/junit-plugin.htmlImage Removed. /struts-examples.

Introduction

Often the data used to populate a form control is dynamically generated, perhaps from a database. When the user submits the form, the Struts 2 validation interceptor attempts to validate the user's form input. If validation fails the Struts 2 framework returns the value "input" but the "input" action is not re-executed. Rather the view associated with the "input" result is rendered to the user. Usually this view is the page that displayed the original form.

...

In the prepare method you should put any statements that must be executed no matter what other Action class method will be called and also statements that should be executed if validation fails. Usually statements in the prepare method set the value for Action class instance fields that will be used to populate form controls and get the values that will be used to set the initial form field values.

Wiki MarkupIn addition to automatically running the prepare method the [prepare interceptor|http://struts.apache.org/2.3.1.2/docs/prepare - interceptor.html] will also call a method named prepare\[ActionMethodName\]. For example, define a prepare method and a prepareInput method in the Action class that implements preparable. When the Struts 2 framework calls the input method, the prepare interceptor will call the prepareInput and the prepare methods before calling the input method.

Example Application

If you examine class EditAction in the example application (see above) you'll see that it implements the Preparable Interface. In the prepare method is this code:

Code Block
JavajavaJava
java
titleEditAction.java prepare Method


		
   carModelsAvailable = carModelsService.getCarModels() ;
		
   setPersonBean( editService.getPerson() );


The above statements get the car model values used to populate the car model check boxes displayed in the form and also get the information about the Person object being edited.

...