首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Seam AutoCreate不工作了吗?

Seam AutoCreate不工作了吗?
EN

Stack Overflow用户
提问于 2012-02-15 13:19:58
回答 2查看 1.8K关注 0票数 0

我正在尝试将一个seam组件注入到另一个组件中,自动创建它。但是由于某些原因,注入的seam组件抛出了NPE。

XHTML

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

                    </a4j:commandLink>

DetailActionBean.java

代码语言:javascript
复制
@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

代码语言:javascript
复制
@AutoCreate
@Name("rulesValidator")
@Scope(ScopeType.SESSION)
public class RulesValidator implements Serializable {

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


}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-16 04:26:06

Seam将扫描一个基础包并查找@Name组件,然后这些组件将自动可连线。我应该放一个seam.properties文件(空的)给seam,以便知道要扫描哪些基础包。我正在开发的模块有seam.properties,所以RulesValidator不会被扫描,也不会被当作seam组件对待。因此,autoCreate需要很大的工作量。

票数 1
EN

Stack Overflow用户

发布于 2012-02-15 19:41:45

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

更新注释:是的,如果这个注解是presemt,seam将在注入时自动创建一个组件。但是您在注入中声明它不是必需的!这就是为什么seam什么也不做。只需移除@In的所有属性,它就会正常工作。默认值就是您想要的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9288245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档