gpt4 book ai didi

jsf-2 - EJB 方法不是从构造函数调用

转载 作者:行者123 更新时间:2023-12-02 15:38:42 25 4
gpt4 key购买 nike

我创建了一个ejb

@Stateless
@LocalBean
public class BasitBean {

public String helloBasit() {

return "Basit";

} //end of helloBasit()

} //end of class BasitBean

我是从 JSF 调用它的,比如

<h:body>

<h:outputLabel value="#{helloBasit.callBasit()}" />

</h:body>

@ManagedBean
@SessionScoped
public class HelloBasit {

@EJB
private BasitBean basitBean;

/** Creates a new instance of HelloBasit */
public HelloBasit() {

}

public String callBasit() {

return basitBean.helloBasit();

} //end of callBasit()

} //end of class HelloBasit

这段代码运行良好。但是当我像这样更改代码时

<h:body>
<h:outputLabel value="#{helloBasit.label}" />
</h:body>

@ManagedBean
@SessionScoped
public class HelloBasit {

@EJB
private BasitBean basitBean;
String label;

/** Creates a new instance of HelloBasit */
public HelloBasit() {

System.out.println();
String label = basitBean.helloBasit();
System.out.println(label);

}

public BasitBean getBasitBean() {
return basitBean;
}

public void setBasitBean(BasitBean basitBean) {
this.basitBean = basitBean;
}

public String getLabel() {
return label;
}

public void setLabel(String label) {
this.label = label;
}

} //end of class HelloBasit

然后我得到异常

SEVERE: Error Rendering View[/index.xhtml]
com.sun.faces.mgbean.ManagedBeanCreationException: Cant instantiate class: pk.mazars.basitMahmood.HelloBasit.
at com.sun.faces.mgbean.BeanBuilder.newBeanInstance(BeanBuilder.java:193)
at com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:102)
......

为什么我会收到此异常?流程应该是我理解的是当我的页面遇到 #{helloBasit.label} 然后我的构造函数被调用,实例变量被初始化,将 bean 实例注入(inject) basitBean,然后 bean 方法应该调用.但是在这种情况下我在 bean 实例中得到 null 为什么?为什么以前的代码可以工作而不能?我如何从构造函数中调用 bean?

谢谢。

最佳答案

尝试将构造函数的内容移动到后构造函数中......

像这样

@PostConstruct
private void init() {
System.out.println();
String label = basitBean.helloBasit();
System.out.println(label);
}

因为 ejb bean 应该只在托管 bean 启动后注入(inject)

@PostConstruct 在构造函数之后运行(之后托管 bean 本身由 JSF 创建),然后才将 EJB 注入(inject)到 bean 中并可以访问...

关于jsf-2 - EJB 方法不是从构造函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12576689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com