-1

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

1 回答 1

1

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

也就是说,这是否是最好的方法还有待商榷。S2 的类层次结构意味着它肯定是最简单的方法,但您也可以实现适当的接口并使用现有的 S2 功能来实现相同的结果,尽管需要付出更多的努力。

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

于 2013-03-12T11:46:49.433 回答