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

Compare with Current View Page History

« Previous Version 24 Next »

After the Action processes the request, a result is selected to provide the response. A result may simply forward to a HTML page, or a JavaServer page, a FreeMaker or Velocity template, or the result might construct a PDF or some other complex report. There may be multiple results available to an action mapping. To indicate which one to select, the Action class returns a name corresponding to the appropriate result.

struts.xml
<action name="Logon" class="tutorial.Logon">
  <result name="input">/tutorial/Logon.jsp</result>
  <result type="redirect-action">HelloWorld</result>
</action>

In the Hello World lesson, our results used the default type, Dispatcher. The Dispatcher forwards to another web resource. Other kinds of views can be used by specifying a different result type.

The Logon mapping uses a different return type for "success" (the default result code). The redirect-action takes the name of an Action as a parameter, and then issues a client-side redirect to the new action. As a result, the URI on the browser's location bar will change.

Configuring Global Results

It's not unusual for mappings to share a need for the same result. For example, if your application is secure, then many mappings might need to return "login" if the security check fails. Rather than define a common result in every action mapping, the framework lets you define global results.

struts.xml
{code:title=struts.xml|format=xml|borderStyle=solid}
   <global-results>
      <result name="login" type="redirect-action">Login</result>
      <result name="unauthorized" type="action-chain">Unauthorized</result>
   </global-results>
   <!-- other package declarations -->
</package>

Global Absolutes

Because global results are searched after local results, you can override any global result mapping by creating a local result mapping of the same name. Results can indicate resources using relative or absolute URIs. Because you may not know the context in which a result is being invoked, it's best to use absolute paths for global results.

Summary

The framework offers a variety of result types. An Action can select the appropriate result by name, without actually knowing what result type will be rendered. If a result can be used by multiple action mappings, it can be defined once as a global result.

(lightbulb) For more, see Result Types.

  • No labels