在另一个动作中通过构造函数调用Struts动作是一个好习惯吗?

时间:2012-04-25 16:11:44

标签: struts2

我有两个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();
}
}

2 个答案:

答案 0 :(得分:4)

(不寒而栗)我不会。我将常用功能重构为一个可以调用的单独类。但那个班级将是一个POJO,而不是一个行动。

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

答案 1 :(得分:2)

我加上@ duffymo的回答,但这里还有一些值得思考的东西。

如果功能在操作之间是通用的,则它属于基本操作(如果与Web相关)或实用程序类(与Web相关或不相关)。哪个最有意义取决于背景。

沿着这些上下文行,取决于你所谈论的实际功能,它可能在其他地方更有意义 - 在拦截器,方面,混合(如何做到这取决于实现语言),在不了解细节的情况下,很难更具体。