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.
... <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> ...
<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 |
com.opensymphony.webwork.dispatcher.ServletDispatcherResult |
|
redirect |
com.opensymphony.webwork.dispatcher.ServletRedirectResult |
|
chain |
com.opensymphony.xwork.ActionChainResult |
|
velocity |
com.opensymphony.webwork.dispatcher.VelocityResult |
|
freemarker |
com.opensymphony.webwork.views.freemarker.FreemarkerResult |
|
jasper |
com.opensymphony.webwork.views.jasperreports.JasperReportsResult |
|
xslt |
com.opensymphony.webwork.views.xslt.XSLTResult |
|
header |
com.opensymphony.webwork.dispatcher.HttpHeaderResult |
|
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.