java - REST 资源内的 JSF 托管属性注入(inject) null

标签 java jsf javabeans

我有一个 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/

相关文章:

java - 如何在事件上调用 jquery 函数?

通过 MySQL 的 Javascript DateTimePicker

java - 什么是 "incompletely constructed object"?

java - 当我滚动它时,会显示 Android 中的 ScrollView

JAVA,Switch case需要两个条目才能工作

java - 如何在 JSF 应用程序中引用文件资源

jsf - 如何在一个 EAR 中的两个 WAR 中使用 OmniFaces 1.6?

java - java中为什么要用XMLEncoder来序列化对象?

java - 调用部署在远程机器上的 session bean 的方法

java - 客户端消费者未收到 JMS 回复