4

动作执行后是否有struts2接口

可准备是在执行动作之前,我们在执行动作之后有什么吗?

4

4 回答 4

5

如果你想在动作执行前后执行一些方法,你可以使用下面的注解,但你需要配置AnnotationWorkflowInterceptor

@前

@后

于 2012-11-04T15:26:25.460 回答
1

不,没有。(我也不知道你为什么想要这样的东西。)

最简单的选择:

  • 创建您自己的类似 Preparable 的拦截器来执行此操作。
  • 创建一个使用实际操作方法调用子类的基本操作类。
  • 使用 AOP,例如,与 Spring 或 AspectJ 一起使用。
于 2012-11-03T13:02:51.903 回答
0

我不确定,你的情况是什么,但我认为这可能是你正在寻找的:执行和等待拦截器

于 2012-11-03T10:12:38.950 回答
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";
    }

}
于 2012-11-03T15:43:33.573 回答