如何在不扩展ActionSupport的情况下使用addActionMessage

时间:2013-03-12 02:00:27

标签: java-ee struts2 annotations

我使用@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 
    }
}

1 个答案:

答案 0 :(得分:1)

这暴露了继承的一个问题;您必须确保在层次结构中的正确位置扩展类。这里的评论是正确的(并且应该是一个答案):它是应该扩展ActionSupport的抽象基类。

那就是说,最佳方法是否会受到一些争论。 S2的类层次结构意味着它肯定是最简单的方法,但您也可以实现适当的接口并使用现有的S2功能来实现相同的结果,尽管需要付出更多努力。

S2(正确地)声称操作可以是POJO,但事实是如果你这样做,你将丢失批次的S2功能。应将操作视为客户端(通常是浏览器)与实际完成的代码之间的接口。将Web层绑定到Web框架并不是一个真正的问题:您可能会失去很小的灵活性,但这种灵活性应该在其他地方进行编码,并且由Web层使用