cdi相关内容
我已经阅读了 CDI 中的 @Produces 注释,但我不明白它的用法. 公共类资源{//使用资源生产者模式公开一个实体管理器@SuppressWarnings("未使用")@PersistenceContext@Produces私有 EntityManager em;//@Produces记录器 getLogger(InjectionPoint ip) {//字符串类别 = ip.getMe
..
Java EE7 由一堆“bean"定义组成: 托管 Bean 1.0 (JSR-316/JSR-250) Java 1.0 的依赖注入 (JSR-330) CDI 1.1 (JSR-346) JSF 托管 Bean 2.2 (JSR-344) EJB 3.2 (JSR-345) 为了摆脱脑海中的混乱,我研究了几篇“何时使用哪种bean类型"的文章.EJB 的优点之一似乎是它们
..
我发现了这个问题:@Inject 有什么区别和@EJB 但我没有更明智.我之前没有用过 Java EE,也没有依赖注入的经验,所以我不明白我应该使用什么? @EJB 是一种旧的注入方式吗?在使用@Inject 使用新的CDI 框架时,使用此注解时是否由EJB 容器完成注入?这是区别吗?如果是这种情况,我应该使用 @Inject 而不是 @EJB 吗? 解决方案 @EJB 仅用于注入
..
我正在尝试将 Spring 上下文中定义的 bean 注入 CDI 托管组件,但没有成功.bean 没有被注入,而是在每次应该执行注入时创建一个新实例.我的环境是带有 JBoss Weld 的 Tomcat 7. Spring ApplicationContext 很简单: ......
..
我有一些 @SessionScoped CDI bean.以前都是JSF托管bean(从JSF托管bean改为CDI托管bean). 我正在执行以下操作,以删除在用户成功下在线订单后管理的某些会话范围的 JSF. MapsessionMap = context.getSessionMap();sessionMap.remove("cartBean");sessionMap.remove("
..
这是我在这个美丽的网站上的第一个问题.我用谷歌搜索了很多,但没有找到任何解决方案. 我是 JSF 的新手,正在通过 Kent Ka lok Tong 的“JSF 2 API 和 JBoss Seam"学习它. 现在我有一个简单的登录实现问题.我有一个登录页面:
..
有以下代码片段: 豆子: import javax.faces.view.ViewScoped;导入 javax.inject.Named;@Named(value = "directoryBean")@ViewScoped公共类 DirectoryBean 实现了 Serializable {private static final long serialVersionUID = 1L;
..
我有一个会话范围的 bean: @Named@SessionScoped公共类 SessionBean 实现了 Serializable {私人字符串 someProperty;公共字符串 getSomeProperty() {返回一些属性;}} 我想将它注入到请求范围的 bean 中并用它进行初始化: @Named@RequestScoped公共类 RequestBean {@注入私有 S
..
我试图通过反射从 JSF 页面的支持 bean 访问某些字段的值.问题是,当我使用 getter 时,我得到了正确的值,但是当我使用必要字段的 get(obj) 方法时,我总是得到一个返回的空值. 获取 beanObject: ELContext elcontext = FacesContext.getCurrentInstance().getELContext();Object bean
..
如果我不能将@ManagedProperty 注释与@Named 一起使用,因为@ManagedProperty 在CDI(?) 中不起作用,那么您如何将URL 中的参数传递给facelets 客户端?在我的代码中,我想通过“后退"和“前进"按钮将 javax.mail.getMessageNumber() 传递给 details.xhtml. 我知道应该使用@Inject,但是注入的是什么
..
我正在尝试处理 @javax.faces.bean.ManagedProperty 但没有成功! 我一直在关注这个 指导,这似乎并不难.但我的代码根本行不通! 这是一个小片段 @ManagedBean@SessionScoped公共类 LoginBean {私人用户用户;//...} @Named@RequestScoped公共类 MessagesBean {@ManagedPro
..
我目前正在使用 RichFaces 评估 Java EE 6/JSF 2.1. 声明为 的bean @ManagedBean@ViewScoped 获取 ID 集(准备删除操作等). 通过 JSF 显示一个确认弹出窗口. 如果用户确认,则调用 delete 方法并删除在步骤 1 中为其存储 ID 的行. 由于 CDI bean 没有 ViewScope,我尝试将 bean 声
..
有什么区别 import javax.annotation.ManagedBean;导入 javax.enterprise.context.SessionScoped; 和 import javax.faces.bean.ManagedBean;导入 javax.faces.bean.SessionScoped; ? 解决方案 javax.enterprise.context.
..
我刚刚开始阅读Core JavaServer Faces,第 3 版,他们这样说(强调我的): 有两个独立的机制,CDI bean,这是一个历史意外和 JSF 托管 bean,用于可在 JSF 页面中使用的 bean.我们建议除非您的应用程序必须在普通 servlet 上工作,否则您使用 CDI bean跑者如Tomcat. 为什么?他们不提供任何理由.我一直在将 @ManagedBe
..
当尝试像这样在 EL 中引用托管 bean #{bean.entity.property} 时,有时会出现 javax.el.PropertyNotFoundException: Target Unreachable 异常抛出,通常是在设置 bean 属性时,或者在调用 bean 操作时. 似乎有五种不同的消息: 目标无法访问,标识符 'bean' 解析为 null 目标不可达,'实
..
我使用的是 Java EE 7.我想知道将 JPA EntityManager 注入应用程序范围 CDI bean 的正确方法是什么.您不能只使用 @PersistanceContext 注释注入它,因为 EntityManager 实例不是线程安全的.假设我们希望我们的 EntityManager 在每个 HTTP 请求处理开始时创建,并在 HTTP 请求处理完后关闭.我想到了两个选项:
..
我使用 Weld 作为 CDI 实现.我的集成测试,当我在 src/test/java/META-INF/beans.xml运行良好>.这是一个简单的测试: 公共类 WeldIntegrationTest {@测试public void testInjector() {新焊接().初始化();//不应该抛出异常}} 现在当我运行 mvn clean install 时,我总是得到:缺少 MET
..
我觉得 Java EE 6 规范有点乱.有几组注释. 我们有用于创建 EJB 的 javax.ejb 注释,例如 @Stateful 和 @Stateless. 还有一个 @javax.annotation.ManagedBean 来创建托管 bean. javax.enterprise.context 中有@SessionScoped 和@RequestScoped 等注解.
..
在托管 bean 中,@PostConstruct 在常规 Java 对象构造函数之后调用. 为什么我要使用 @PostConstruct 来通过 bean 初始化,而不是使用常规构造函数本身? 解决方案 因为在调用构造函数时,bean 尚未初始化 - 即没有注入依赖项.在 @PostConstruct 方法中,bean 已完全初始化,您可以使用依赖项. 因为这是保证这个方
..
我正在尝试在 Java-web-start 应用程序中使用 CDI,但卡在类加载上.看起来 FileSystemURLHandler 将 web-start 缓存中的 URL 视为文件. org.jboss.weld.environment.se.discovery.url.FileSystemURLHandler - 无法读取条目java.io.FileNotFoundException: h
..