Apache Struts 2 Documentation > Home > FAQs > Can we access an Action's Result |
Yes, you can access the ResultConfig objects before the Action executes, and you can access the final Result object using a PreResultListener.
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();
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();