Java Seam自动创建不起作用?

Java Seam自动创建不起作用?,java,jsf,xhtml,seam,autocreate,Java,Jsf,Xhtml,Seam,Autocreate,我试图将一个seam组件注入到另一个组件中,并自动创建它。但由于某些原因,注入煤层组分会抛出NPE XHTML RulesValidator.java @AutoCreate @Name("rulesValidator") @Scope(ScopeType.SESSION) public class RulesValidator implements Serializable { private int checkCount = 0; public void setCheckC

我试图将一个seam组件注入到另一个组件中,并自动创建它。但由于某些原因,注入煤层组分会抛出NPE

XHTML

RulesValidator.java

@AutoCreate
@Name("rulesValidator")
@Scope(ScopeType.SESSION)
public class RulesValidator implements Serializable {

    private int checkCount = 0;
    public void setCheckCount(int checkCount) {
        this.checkCount = checkCount;
    }


}

Required false就是这个意思。如果它还不存在,将不会创建它,您应该检查它。自动创建只是意味着不需要在in注释上定义create true

最新评论意见:
是如果此注释存在,seam将在注入时自动创建组件。但是您在注射中声明它不是必需的!这就是seam什么都不做的原因。只需删除@In的所有属性,它就可以工作了。默认值是您想要的

Seam将扫描一个基本包并查找@Name组件,然后这些组件将自动连接。我应该放一个seam.properties文件(空),让seam知道要扫描哪些基本包。我正在处理的模块dint具有seam.properties,因此RulesValidator没有被扫描并作为seam组件处理。因此,autoCreate-dint起作用。

Seam文档说,autoCreate指定每当请求该组件时,都应自动实例化该组件,即使@In没有指定create=true。你的意思是我需要
@Create public void init(){rulesValidator=new rulesValidator();}
如果我这样做,我的rulesValidator实例变量在每次调用它们时都会被初始化要执行,让NPE检查他们的代码只需绕过调用即可。
@Name("detailAction")
public class DetailActionBean implements Serializable {

    @In(create = true, required = false)
    @Out(required = false)
    private RulesValidator rulesValidator;

   public void showInformation(long id) {

                rulesValidator.setCheckCount(0); // rulesValidator == null here and throws npe

   }
)
@AutoCreate
@Name("rulesValidator")
@Scope(ScopeType.SESSION)
public class RulesValidator implements Serializable {

    private int checkCount = 0;
    public void setCheckCount(int checkCount) {
        this.checkCount = checkCount;
    }


}