我使用@Action来定义我的动作类,但要使用addActionMessage
我必须扩展ActionSupport
类。
当我的控制器扩展一个抽象类时,我无法扩展ActionSupport
类。
如何在不延长addActionMessage
的情况下使用ActionSupport
。
import org.apache.struts2.convention.annotation.Action;
@Action
public class MyClass extends AbstractOtherClass implements ModelDriven {
....
public String Messages(){
addActionMessage("g"); << cannot find symbol error
}
}
答案 0 :(得分:1)
这暴露了继承的一个问题;您必须确保在层次结构中的正确位置扩展类。这里的评论是正确的(并且应该是一个答案):它是应该扩展ActionSupport
的抽象基类。
那就是说,最佳方法是否会受到一些争论。 S2的类层次结构意味着它肯定是最简单的方法,但您也可以实现适当的接口并使用现有的S2功能来实现相同的结果,尽管需要付出更多努力。
S2(正确地)声称操作可以是POJO,但事实是如果你这样做,你将丢失批次的S2功能。应将操作视为客户端(通常是浏览器)与实际完成的代码之间的接口。将Web层绑定到Web框架并不是一个真正的问题:您可能会失去很小的灵活性,但这种灵活性应该在其他地方进行编码,并且由Web层使用。