代码之家  ›  专栏  ›  技术社区  ›  Shadowman

抽象基类中的Seam@Factory?

  •  1
  • Shadowman  · 技术社区  · 14 年前

    我在Seam中实现了一系列的web操作来执行创建、读取、更新等操作。对于我的read/update/delete操作,我希望有单独的操作类,它们都扩展了一个抽象基类。我想将@Factory方法放在抽象基类中,以检索要对其执行操作的项。例如,我将此作为基类:

    public abstract class BaseAction {
    
       @In(required=false)@Out(required=false)
       private MyItem item=null;
    
       public MyItem getItem(){...}
    
       public void setItem(...){...}
    
       @Factory("item")
       public void initItem(){...}
    }
    

    我的子类将扩展BaseAction,这样我就不必重复逻辑来加载要查看、删除、更新等的项。但是,当我启动应用程序时,Seam抛出错误,说我为同一个对象声明了多个@Factory。

    有什么办法吗?有没有办法在基类中提供@Factory而不编码这些错误?

    1 回复  |  直到 14 年前
        1
  •  2
  •   mtpettyp    14 年前

    您遇到的问题是,每个Seam组件都需要一个唯一的名称—使用您的方法,每个子类都有一个名为“item”的组件。

    @Name( "action1" )
    public class Action1 extends BaseAction
    {
      ...
    }
    

    <factory name="action1Item" value="#{action1.item}" />