When an Action class method completes, it returns a String. The value of the String is used to select a result element. An action mapping will often have a set of results representing different possible outcomes. A standard set of result tokens are defined by the ActionSupport
base class.
Code Block |
---|
| java |
---|
| java |
---|
title | Predefined result names |
---|
|
String SUCCESS = "success";
String NONE = "none";
String ERROR = "error";
String INPUT = "input";
String LOGIN = "login";
|
...
The result element has two jobs. First, it provides a logical name. An Action
can pass back a token like "success" or "error" without knowing any other implementation details. Second, the result element provides a Result Typeresult type. Most results simply forward to a server page or template, but other Result Types can be used to do more interesting things.
Intelligent Defaults
A default Result Type can be set as part of the configuration for each packageEach package may set a default result type to be used if none is specified in a result element. If one package extends another, the "child" package can set its own default result, or inherit one from the parent.
Code Block |
---|
title | Setting a default Result Type |
---|
|
<result-types>
<result-type name="dispatcher" default="true"
class="org.apache.struts2.dispatcher.ServletDispatcherResult"
default="true"/>
</result-types>
|
If a type
attribute is not specified, the framework will use the dispatcher
. The default Result Type, dispatcher
type, which forwards to another web resource. If the resource is a JavaServer Page, then the container will render it, using its JSP engine.
...
Code Block |
---|
| xml |
---|
| xml |
---|
title | Multiple Results |
---|
|
<action name="Hello">
<result>/hello/Result.jsp</result>
<result name="error">/hello/Error.jsp</result>
<result name="input">/hello/Input.jsp</result>
</action>
|
...
Code Block |
---|
| xml |
---|
| xml |
---|
title | Defining global results |
---|
|
<global-results>
<result name="error">/Error.jsp</result>
<result name="invalid.token">/Error.jsp</result>
<result name="login" type="redirect-actionredirectAction">Logon!input</result>
</global-results>
|
...
Code Block |
---|
| java |
---|
| java |
---|
title | FragmentAction implementation fragment |
---|
|
private String nextAction;
public String getNextAction() {
return nextAction;
}
|
...
Code Block |
---|
| xml |
---|
| xml |
---|
title | FragmentAction configuration fragment |
---|
|
<action name="fragment" class="FragmentAction">
<result name="next" type="redirect-actionredirectAction">${nextAction}</result>
</action>
|
...