Fork me on GitHub
<< back to Core Developers Guide Edit on GitHub

Result Annotation

The

@Result

annotation allows the definition of

Action

results in the

Action

class rather than an XML file.

The @Result annotation lives at the Action_class_ level and not the method level. This matches what is found in an XML-based Action configuration. Do not be tempted to annotate your Action’s methods; it will not work.

In order for

@Result

and

@Results

annotations to be configured correctly you must set the

actionPackages

filter

init-param

to a comma-separated list of packages containing the annotated

Action

classes. See Zero Configuration for further information; there are

Action

class naming conventions if you don’t implement the

Action

interface and other tidbits there.

@Result Annotation Parameters

{float:right|width=300px}
  {info}
    See org.apache.struts2.config.Result annotation JavaDocs.
  {info}
{float}
Action.SUCCESS
NullResult

. For example:

NullResult.class
FreemarkerResult.class
PlainTextResult.class
VelocityResult.class
ServletDispatcherResult.class
ServletRedirectResult.class
ServletActionRedirectResult.class

- equivalent to the

redirectAction

type in XML config

TilesResult.class
Result

interface)

@Result – Defining a Single Result

Map the “success” result (explicitly named) to a Tile definition named “/home.page”.

Defining a Single Result


@Result(name="success", value="/home.page", type=TilesResult.class)
public class HomeAction extends ActionSupport {
    // ...
}

@Results – Defining Multiple Results

Defines a set of results for an

Action

.

Defining Multiple Results


@Results({
    @Result(name="success", value="/home.page", type=TilesResult.class),
    @Result(name="homeError", value="/homeError.page", type=TilesResult.class)
})
public class HomeAction extends ActionSupport {
    // ....
}