Yes, that could be done with the help of an interceptor.
+ Method One +
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
.
Code Block | ||||
---|---|---|---|---|
| ||||
public class MyInterceptor implements Interceptor { // ... public String intercept(ActionInvocation invocation) throws Exception { Map<String, ResultConfig> 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.
Code Block | ||||
---|---|---|---|---|
| ||||
+ Method Two +
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.
Code Block | ||||
---|---|---|---|---|
| ||||
Code Block | ||||
public class MyInterceptor implements Interceptor { // ... public String intercept(ActionInvocation invocation) throws Exception { invocation.addPreResultListener(new PreResultListener() { public void beforeResult(ActionInvocation invocation, String resultCode) { Map<String, ResultConfig> 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.
Code Block | ||||
---|---|---|---|---|
| ||||
Map<String, ResultConfig> resultsMap = invocation.getProxy().getConfig().getResults();
|