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