솔기 구성 요소를 다른 구성 요소에 주입하려고합니다. 자동으로 구성합니다. 그러나 어떤 이유로 주입 된 솔기 구성 요소가 NPE를 던집니다.Seam AutoCreate가 작동하지 않습니까?
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;
}
}
Seam docs, AutoCreate @In에서 create = true를 지정하지 않아도 요청할 때마다이 구성 요소를 자동으로 인스턴스화해야 함을 지정합니다. 당신은'@Create가 필요하다는 것을 의미합니까? public void init() { rulesValidator = new rulesValidator(); }'이 작업을 수행하면 rulesValidator 인스턴스 변수가 호출 될 때마다 초기화됩니다. –
명확히하기 위해, 나는'rulesValidator.setCheckCount (0);'을 실행하기를 원합니다. NPE 체크를하면 호출을 무시할 것입니다. –