Apache Struts 2 Documentation > Home > FAQs > Can we access an Action's Result
Added by tm_jee, last edited by Ted Husted on Jul 22, 2006  (view change)

Yes, you can access the ResultConfig objects before the Action executes, and you can access the final Result object using a PreResultListener.

Accessing the ResultConfig Objects

If you need to work with the set of ResultConfigs before the Action executes, you can use an Interceptor to process the Map returned by getResults.

public class MyInterceptor implements Interceptor {
  // ...
  public String intercept(ActionInvocation invocation) throws Exception {
    Map resultsMap = invocation.getProxy().getConfig().getResults();

      // do something with ResultConfig in map

    return invocation.invoke();
  }
  // ...
}

If you are writing against Java 5, you could use a generic when obtain the map.

Map<String, ResultConfig> resultsMap = invocation.getProxy().getConfig().getResults();

Adding a PreResultListener

If you need to work with the final Result object before it is executed, you can use an Interceptor to register a PreResultListener. The code example creates a PreResultListener as an anonymous inner class.

public class MyInterceptor implements Interceptor {
  // ...
  public String intercept(ActionInvocation invocation) throws Exception {

    invocation.addPreResultListener(new PreResultListener() {

      public void beforeResult(ActionInvocation invocation, String resultCode) {
        Map resultsMap = invocation.getProxy().getConfig().getResults();
        ResultConfig finalResultConfig = resultsMap.get(resultCode);

          // do something interesting with the 'to-be' executed result

        }

      });

    return invocation.invoke();
  }
  // ...
}

If you are writing against Java 5, you could use a generic when obtain the map.

Map<String, ResultConfig> resultsMap = invocation.getProxy().getConfig().getResults();