Tag: cdi

CDI @Named bean中的ManagedProperty返回null

我试图处理@ManagedProperty但没有成功! 我一直在遵循这个指南,似乎并不难。 但是我的代码根本行不通 这是一个小片段 @ManagedBean @SessionScoped public class LoginBean { @EJB private LoginUserLocal loginUser; private boolean loggedIn = false; private User user; private StreamedContent image; . . . //– @Named(value = "messagesBean") @RequestScoped public class MessagesBean { @ManagedProperty(value = "#{loginBean}") private LoginBean loginBean; public LoginBean getLoginBean() { return loginBean; } public void setLoginBean(LoginBean loginBean) { […]

我应该使用@EJB还是@Inject

我发现这个问题: @Inject和@EJB有什么区别,但我没有得到任何明智的。 我以前没有做过Java EE,也没有使用dependency injection的经验,所以我不明白我应该使用什么? 是@EJB和旧的注射方式? 在使用@Inject时使用此批注时,EJB容器是否使用新的CDI框架进行注入? 这是不同的,如果是这样的话,我应该使用@Inject而不是@EJB?

CDI注入到FacesConverter中

从几个search,这似乎是一个问题已经存在了一段时间。 我写了一个如下所示的FacesConverter。 对象Category是一个JPA实体,而CategoryControl是提取它的DAO。 @FacesConverter(value = "categoryConverter") public class CategoryConverter implements Converter { @Inject private CategoryControl cc; public CategoryConverter() { } @Override public Object getAsObject(FacesContext context, UIComponent component, String value) { if (cc != null) return cc.getByName(value); System.out.println("CategoryConverter().getAsObject(): no injection!"); return null; } @Override public String getAsString(FacesContext context, UIComponent component, Object value) { if (!(value instanceof […]

如何创build一个模块化的JSF 2.0应用程序?

我有一个定义良好的界面的应用程序。 它使用CDI来parsing模块,(具体来说,它使用API​​接口上的实例<>注入点来parsing模块),并通过接口传回各种数据。 我有意将API和实现保持分开,并且模块只从APIinheritance以避免紧耦合,应用程序只通过运行时依赖知道模块,并通过API完成数据传递。 应用程序在没有模块的情况下运行正常,只需将jar放入WEB-INF / lib文件夹并重新启动应用程序服务器即可添加。 我遇到的问题是我希望模块创build视图的一部分,因此我希望以可移植的方式调用JSF组件,或者从模块中进行包含以获得它呈现其视图。 我已经解决了我想要调用的模块,并准备好引用模块的接口。 我最初的想法是做一个ui:包含要求模块提供视图模板的地方,但我不知道如何以有意义的方式回答该查询,因为视图分辨率是从应用程序完成的根,而不是图书馆的根。 执行摘要是我不知道如何使用JSF for .xhtml(模板/组件)文件跳过从应用程序到库的差距。 使用CC会很好,但是如何在运行时指定我需要特定的CC实例,而不是将其硬编码到页面中? 我当然可以直接调用应用程序代码,并要求它提供标记,但是这看起来非常暴躁,一旦我有了标记,我不确定如何告诉JSF来评估它。 也就是说,我可以想象一个组件,将采取资源path,抢标记和评估,返回完成的标记,我只是不知道如何实现。 如果可能的话,我宁愿避免强迫模块开发人员去使用繁重的UIComponent方法,这意味着要么采取一种dynamic的方式来执行ui:include(或一些等效)或者dynamic调用CC的方式。 (我不介意在应用程序中编写UIComponent方法ONCE,如果这使得模块开发人员的生活更容易) 有什么build议,我应该看看这个了? (如果我先find答案,我会在这里发表答案)

为什么有不同的beanpipe理注释

有什么区别 import javax.annotation.ManagedBean; import javax.enterprise.context.SessionScoped; 和 import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; ?

Java EE 6 @ javax.annotation.ManagedBean与@javax.inject.named比较@ javax.faces.ManagedBean

我觉得在Java EE 6规范中有一点点混乱。 有几组注释。 我们有像@Stateful和@Stateless这样的javax.ejb注释来创buildEJB。 还有一个@javax.annotation.ManagedBean来创build一个托pipe的bean。 javax.enterprise.context有注释,如@SessionScoped和@RequestScoped 。 在javax.faces.bean包中还有@ManagedBean和@SessionScoped / @RequestScoped注解。 为了使事件更复杂,有一个包含@Named注释的javax.inject包。 有人可以描述他们是如何相互关联? 我在哪里可以使用@ @EJB ,@ @Inject或@ManagedPropery注入其他豆?

支持豆(@ManagedBean)或CDI豆(@Named)?

我刚刚开始阅读通过核心JavaServer Faces,第三版。 他们说这个(重点是我的): 对于可以在JSF页面中使用的bean,有两个单独的机制,即CDI bean和JSF managed beans,这是一个历史性的意外。 我们build议您使用CDI bean,除非您的应用程序必须使用纯粹的servlet运行程序(如Tomcat)。 为什么? 他们没有提供任何理由。 我在GlassFish 3上运行的原型应用程序中的所有bean都使用了@ManagedBean ,而且我还没有真正注意到这个问题。 我不特别介意从@ManagedBean迁移到@Named ,但是我想知道为什么我应该打扰 。

识别并解决javax.el.PropertyNotFoundException:目标无法访问

当试图在EL中引用一个托pipebean,就像#{bean.entity.property} ,有时候会抛出一个javax.el.PropertyNotFoundException: Target Unreachableexception,通常在设置bean属性时,或者当一个bean动作被调用。 似乎有五种不同的信息: 目标无法访问,标识符“bean”parsing为null 目标不可到达,“实体”返回null Target Unreachable,'null'返回null 目标无法访问,“0”返回null Target Unreachable,'BracketSuffix'返回null 他们都是什么意思? 他们是如何造成的,应该如何解决?