我有两个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();
}
}
答案 0 :(得分:4)
(不寒而栗)我不会。我将常用功能重构为一个可以调用的单独类。但那个班级将是一个POJO,而不是一个行动。
我要小心在Actions中嵌入功能。我认为他们坚定地站在网络阵营。您应该做的只是验证并将参数绑定到对象中,将它们交给POJO进行处理,并将结果打包以便返回。
答案 1 :(得分:2)
我加上@ duffymo的回答,但这里还有一些值得思考的东西。
如果功能在操作之间是通用的,则它属于基本操作(如果与Web相关)或实用程序类(与Web相关或不相关)。哪个最有意义取决于背景。
沿着这些上下文行,取决于你所谈论的实际功能,它可能在其他地方更有意义 - 在拦截器,方面,混合(如何做到这取决于实现语言),在不了解细节的情况下,很难更具体。