2
我刚开始使用JSF,我不明白为什么我的服务没有注入到控制器中。尚未设置JSF 2.0 @ManagedProperty
@ManagedBean
@ApplicationScoped
public class MyController {
@ManagedProperty(value = "#{service}")
private MyService service;
public void setService(MyService service) {
this.service = service;
}
public MyService getService() {
return service;
}
public void callToService(AjaxBehaviorEvent event) {
System.out.println(service);
}
}
问:什么是在@ManagedProperty
值的目的是什么?
@ManagedBean
@ApplicationScoped
public class MyService {
}
点击按钮调用方法callToService
但服务null
。
<h:form>
<h:commandButton value="Call Service">
<f:ajax listener="#{myController.callToService}"/>
</h:commandButton>
</h:form>
我按照你的建议使用'@ EJB',但它不工作。我想我需要改变'MyService'的注释,因为它不再是一个托管bean。 – Sydney
是的,使用'@ Stateless'。请注意,您需要一个支持EJB的servletcontainer,例如Glassfish,JBoss等。 – BalusC
我使用的是Tomcat 6,但我在使用maven的类路径中添加了'openejb'。只是为了确保,'MyService'只需要'@ Stateless'?因为我得到这个异常:引起:javax.naming.NameNotFoundException:名称com.xxxxxxxx.controller.MyController未绑定在此上下文中 – Sydney