我有一个 REST 资源类(即监听来自 Web 的传入 REST 连接的资源类),它需要访问托管 bean 库 Controller 。 然而,在调用时我得到一个空指针异常。
@ApplicationPath("webresources")
@Path("/record")
@Stateless
public class RecordResource
{
@ManagedProperty(value = "#{libraryController}") // this references the @ManagedBean named libraryController
private LibraryController libraryController;
@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadWeb(InputStream inputStream)
{
//Null exception below !
getLibraryController().function();
}
public LibraryController getLibraryController()
{
return libraryController;
}
public void setLibraryController(LibraryController libraryController)
{
this.libraryController = libraryController;
}
}
getters/setters 没问题,所以我不知道为什么没有调用 LibraryController 的正确构造函数。
最佳答案
注入(inject)失败,因为客户端类不是 @ManagedBean
,因此容器没有 RecordResource
内的 JSF 上下文的概念。
参见this question以便进一步澄清。
作为解决方法,请考虑使用 @EJB
Controller 并通过 @EJB
注释注入(inject)它。否则请解释此设计背后的业务逻辑是什么。
关于java - REST 资源内的 JSF 托管属性注入(inject) null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20677110/