You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 23 Next »

Overview

Result Types are classes that determine what happens after an Action executes and a Result is returned. Developers are free to create their own Result Types according to the needs of their application or environment. In WebWork 2 for example, Servlet and Velocity Result Types have been created to handle rendering views in web applications.

Note: All built in webwork result types implement the com.opensymphony.xwork.Result interface, which represents a generic interface for all action execution results, whether that be displaying a webpage, generating an email, sending a JMS message, etc.

Result types define classes and map them to names to be referred in the action configuration results. This serves as a shorthand name-value pair for these classes.

snippet of webwork-default.xml
...
<result-types>
    <result-type name="dispatcher" class="com.opensymphony.webwork.dispatcher.ServletDispatcherResult" default="true"/>
    <result-type name="redirect" class="com.opensymphony.webwork.dispatcher.ServletRedirectResult"/>
    <result-type name="velocity" class="com.opensymphony.webwork.dispatcher.VelocityResult"/>
    <result-type name="chain" class="com.opensymphony.xwork.ActionChainResult"/>
    <result-type name="xslt" class="com.opensymphony.webwork.views.xslt.XSLTResult"/>
    <result-type name="jasper" class="com.opensymphony.webwork.views.jasperreports.JasperReportsResult"/>
    <result-type name="freemarker" class="com.opensymphony.webwork.views.freemarker.FreemarkerResult"/>
    <result-type name="httpheader" class="com.opensymphony.webwork.dispatcher.HttpHeaderResult"/>
    <result-type name="stream" class="com.opensymphony.webwork.dispatcher.StreamResult"/>
</result-types>
...
snippet of your xwork.xml
<include file="webwork-default.xml"/>

<package name="myPackage" extends="default">
  <action name="bar" class="myPackage.barAction">
    <!-- default result type is "dispatcher" -->
    <!-- default result name is "success" -->
    <result>foo.jsp</result>
    <result name="error">error.jsp</result>
    </result>
  </action>
</package>

Result Types

Webwork provides several implementations of the com.opensymphony.xwork.Result interface to make web-based interactions with your actions simple. These result types include:

Result Type

name

class

Dispatcher Result

dispatcher

com.opensymphony.webwork.dispatcher.ServletDispatcherResult

Redirect Result

redirect

com.opensymphony.webwork.dispatcher.ServletRedirectResult

Action Chaining Result

chain

com.opensymphony.xwork.ActionChainResult

Velocity Result

velocity

com.opensymphony.webwork.dispatcher.VelocityResult

FreeMarker Result

freemarker

com.opensymphony.webwork.views.freemarker.FreemarkerResult

JasperReports Result

jasper

com.opensymphony.webwork.views.jasperreports.JasperReportsResult

XSL Result

xslt

com.opensymphony.webwork.views.xslt.XSLTResult

HttpHeader Result

header

com.opensymphony.webwork.dispatcher.HttpHeaderResult

Stream Result

stream

com.opensymphony.webwork.dispatcher.StreamResult

Results are specified in a xwork xml config file(xwork.xml) nested inside <action>. If the location param is the only param being specified in the result tag, you can simplify it as follows:

<action name="bar" class="myPackage.barAction">
  <result name="success" type="dispatcher">
    <param name="location">foo.jsp</param>
  </result>
</action>

or simplified

<action name="bar" class="myPackage.barAction">
  <result name="success" type="dispatcher">foo.jsp</result>
</action>

if you are extending webwork-default.xml, then the default result type is "dispatcher". Also, if you don't specify the name of a result, it is assumed to be "success". This means you can simply the result down to

<action name="bar" class="myPackage.barAction">
  <result>foo.jsp</result>
</action>

NOTE: The Parse attribute enables the location element to be parsed for expressions. An example of how this could be useful:

<result name="success" type="redirect">/displayCart.action?userId=${userId}</result>

NOTE: You can also specify global-results to use with multiple actions. This can save time from having to add the same result to many different actions. For more information on result tags and global-results, see Result Configuration section.

  • No labels