执行动作后Struts 2接口

时间:2012-11-03 05:55:23

标签: struts2

执行动作后是否有任何struts2接口

在执行行动之前,可行的是可执行的吗?

4 个答案:

答案 0 :(得分:5)

如果您想在执行操作之前和之后执行某些方法,可以使用以下注释,但需要配置AnnotationWorkflowInterceptor

@Before

@After

答案 1 :(得分:1)

不,没有。 (我也不确定你为什么要这样做。)

最简单的选择:

  • 创建你自己的类似Preparable的拦截器。
  • 使用实际操作方法创建一个调用子类的基本操作类。
  • 使用AOP,例如,使用Spring或AspectJ。

答案 2 :(得分:0)

我不确定,你的情况如何,但我认为这可能就是你要找的东西:Execute And Wait Interceptor

答案 3 :(得分:0)

PreResultListener界面。从动作中实现它并不是最漂亮的。

此接口的示例用法可用于创建抽象支持类,例如:

public abstract class PreResultSupport extends ActionSupport implements PreResultListener {

    protected abstract String doExecute();

    @Override
    public String execute() {
        ActionContext.getContext().getActionInvocation().addPreResultListener(this);
        return doExecute();
    }

}

然后,对于你想要做的一些行动"准备后"因为,你可以扩展这个支持类:

public class ExampleAction extends PreResultSupport {

    private String instanceField;

    @Override
    protected String doExecute() {
        //your action code here
        return SUCCESS;
    }

    @Override
    public void beforeResult(ActionInvocation invocation, String resultCode) {
        //your "post-prepare" or "view-prepare" code here
        //this is threadsafe as well, so you can still reference class fields:
        this.instanceField = "blahblahblah";
    }

}