我在 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 而不会遇到这些错误?
最佳答案
您遇到的问题是每个 Seam 组件都需要一个唯一的名称 - 使用您的方法,您将为每个子类提供一个名为“item”的组件。
我会执行以下操作:
@Name( "action1" )
public class Action1 extends BaseAction
{
...
}
在 Components.xml 中:
<factory name="action1Item" value="#{action1.item}" />
关于java - 在抽象基类中接缝@Factory?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3063950/