Seam @Factory在抽象基类中?

时间:2010-06-17 17:19:10

标签: java inheritance seam abstract-class factory

我已经在Seam中实现了一系列Web动作来执行创建,读取,更新等操作。对于我的读取/更新/删除操作,我希望有各自的操作类,它们都扩展了抽象基类。我想将@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 个答案:

答案 0 :(得分:2)

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

我会做以下事情:

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

在components.xml中:

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