Seam AutoCreate无法正常工作?

时间:2012-02-15 05:19:58

标签: java jsf xhtml seam autocreate

我正在尝试将接缝组件注入另一个,自动创建它。但由于某种原因,注入的接缝成分会引发NPE。

XHTML

                   <a4j:commandLink id="cbrModal"
                                     action="#{detailAction.showInformation(1L)}"
                                     reRender="DetailModal"
                                     limitToList="true">
                        <h:outputText value="text"/>

                    </a4j:commandLink>

DetailActionBean.java

@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

   }
)

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;
    }


}

2 个答案:

答案 0 :(得分:1)

必需的错误意味着这一点。如果它不存在它将不会被创建,你应该检查它。自动创建只意味着您不需要在注释中定义create true。

评论更新: 如果此注释是presemt,则Yes seam将在注入时自动创建组件。但是你在注射中说明它不是必需的!这就是为什么缝什么也没做。只需删除@In的所有属性即可。默认值是您想要的。

答案 1 :(得分:1)

Seam将扫描基础包并查找@Name组件,然后这些组件可自动加线。我应该为seam设置一个seam.properties文件(空)来知道要扫描哪些基本包。我正在使用dint的模块有seam.properties,因此没有扫描RulesValidator并将其视为接缝组件。因此autoCreate dint工作。