2

我有两个 Struts2 动作。我想在另一个动作中使用一个动作的公共方法。我可以通过new运算符调用一个动作并调用它的公共方法吗?(为了重用一些常用功能)

public class OneAction extends ActionSupport{
public void doSomeThing(){
    // some code
}

public String execute(){
    // some code
}
}

 public class AnotherAction extends ActionSupport{

public String execute(){
    /* is it ok?*/
    new OneAction().doSomeThing();
}
}
4

2 回答 2

4

(颤抖)我不会。我会将通用功能重构为一个单独的类,两者都可以调用。但该类将是 POJO,而不是 Action。

我会小心在 Actions 中嵌入功能。我认为他们坚定地在网络层阵营。您应该做的只是验证并将参数绑定到对象中,将它们交给 POJO 进行处理,并将结果打包返回。

于 2012-04-25T16:15:24.500 回答
2

我加了@duffymo 的回答,但这里还有一些值得深思的地方。

如果该功能在动作中是通用的,则它属于基本动作(如果与 Web 相关)或实用程序类(与 Web 相关或不相关)。哪个最有意义在很大程度上取决于上下文。

沿着这些上下文线,根据您正在谈论的实际功能,它可能在其他地方更有意义——在拦截器、方面、mixin(如何做到这一点取决于实现语言)等。没有知道细节,很难说得更具体。

于 2012-04-25T18:50:54.677 回答