Thursday, November 09, 2006

Struts 2: Action Redirects

Struts 2.0 provides the ability to chain multiple actions into a defined sequence or workflow. Action chaining can be achieved in multiple ways:
  • Action Chains: This feature works by applying a test:Chain Result to a given Action, and intercepting its target Action's invocation with a ChainingInterceptor.
  • Redirect After Post: A common a pattern in web application development in which your action will result in a redirect to another action.
    • Redirect Action Result: Uses ActionMapper provided by the ActionMapperFactory to redirect the browser to a URL that invokes the specified action. You can see a simple implementation of this in the struts-blank application. If you look at the example.xml file in the application you will can see that the Login action redirects the result to a different action "Menu".
      <action name="Login!*" method="{1}" class="example.Login">
      <result name="input">/example/Login.jsp</result>
      <result type="redirect-action">Menu</result>
      </action>
      In order to send parameters, use the <param></param> tag, as shown below
      <param name="paramname">value</param>
    • Redirect Result:Calls theHttpServletResponse.sendRedirect(), (a browser redirect). The consequence of doing this means that the action (action instance, action errors, field errors, etc) that was just executed is lost and no longer available. This is because actions are built on a single-thread model. The only way to pass data is through the session or with web parameters (?name=value). In the following code, you can see that the "Menu.Action" is used instead of just Menu.
      <action name="Login!*" method="{1}" class="example.Login">
      <result name="input">/example/Login.jsp</result>
      <result type="redirect">Menu.action</result>
      </action>

5 comments:

  1. Custom Steel Wheels can be found here for any make of classic hot rod or street rod

    ReplyDelete
  2. Hi

    This is a nice example. But I have the following question,

    "After a successful login I don't want to redirect the user to a hardcodes page, but I want the user to be redirected where he wanted to go. E.g. if a user clicks on 'sell' he will be forced to log in and after login the sell-page should be shown. If he vlicks on buy the buy-page should be shown after login. Is there an elegant way to do this?"

    ReplyDelete
  3. Hi,
    I have the same problem like after a successful login I don't want user to redirect to hardcode pages but I want the user to be redirected where he come from.

    please provide solution for this

    ReplyDelete
  4. I also have a same problem i have a email link which takes me to the Site where i need to login after successfull login i want the user to be taken to page that was in the link and not the hardcoded page

    Thanks in advance

    Manish

    ReplyDelete
  5. hi
    in struts2 i want change the way error messages dispalying in jsp .for example displying errors messages after field right side.i tried lot things with java script and finalyy i failed.please help me .i have strucked here

    ReplyDelete