JSF在REST资源中管理属性注入null

时间:2013-12-19 08:53:33

标签: java jsf javabeans

我有一个REST资源类(所以侦听来自Web的传入REST连接的那个)需要访问托管bean库控制器。 但是在调用时,我得到一个空指针异常。

@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;
    }
}

getter / setter是好的,所以我不知道为什么没有调用LibraryController的正确构造函数。

1 个答案:

答案 0 :(得分:2)

注入失败,因为客户端类不是@ManagedBean,因此容器在RecordResource内没有JSF上下文的概念。

有关进一步说明,请参阅this question

作为一种解决方法,请考虑使用@EJB控制器并通过@EJB注释注入它。否则请解释这个设计背后的商业逻辑。