Tag: managed bean

JSF(和PrimeFaces)如何将参数传递给ManagedBean中的方法

我有一个我在inputtext中显示的Employee对象。 例如,员工的名字显示在inputtext中。 当这个名字的值改变时,它调用一个方法。 在此之前,我想调用一个方法,该方法将员工的ID保存在managedbean中,以便我知道哪个员工需要更改。 我怎么做到这一点,到目前为止我得到了这个: 我想我应该使用onValueChangedStart或firstNameChanged方法传递ID。 我该怎么做呢? 或者有更好的方法吗? emp有一个吸气剂。 所以#{emp} .id得到它。

我应该在JSF ManagedBean中打开/关闭JMS连接的位置?

在使用JSF 2和Ajax的简单演示Web应用程序中,ManagedBean中有一个方法从JMS队列接收消息: @ManagedBean public class Bean { @Resource(mappedName = “jms/HabariConnectionFactory”) private ConnectionFactory connectionFactory; @Resource(mappedName = “jms/TOOL.DEFAULT”) private Queue queue; public String getMessage() { String result = “no message”; try { Connection connection = connectionFactory.createConnection(); connection.start(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageConsumer consumer = session.createConsumer(queue); Message message = consumer.receiveNoWait(); if (message != null) { result = […]

渴望ApplicationScoped托管bean构建多次

我有一堆急切的 ApplicationScoped托管bean。 其中一些通过ManagedProperty注释注入到其他注释中,形成依赖树。 每个依赖bean在构造之后操纵其父级。 但是,似乎为每次注射创建了一个新实例,从而使之前的操作无法完成。 据我了解, ApplicationScoped bean只能创建一次。 我误解了或者为什么会这样? 是因为他们渴望吗? 这是一个例子: ParentBean.java package example; import javax.annotation.PostConstruct; import javax.faces.bean.ApplicationScoped; import javax.faces.bean.ManagedBean; @ManagedBean(eager = true) @ApplicationScoped public class ParentBean { static int initCount = 0; // … @PostConstruct public void init() { ++initCount; // Will end up being between 1 and 3. Expected always 1. // … […]

每个请求都会重新创建复合组件中的支持bean

我有两个变量“userId”和“name”。 当我点击例如“SHOW USERID”按钮时它工作正常并设置“renderUserId = true”并用“render”显示它,但是如果我点击另一个“SHOW”按钮,那么Bean重建并且我松了“renderUserId = true”,它变为“false”和“renderName = true”,因此它显示正常,但USERID被隐藏。 我的问题是,当我渲染xhtml时,如何避免丢失bean值? 这是我的代码的简单模拟。 注意:如果我在“h:commandButton”中使用“actionListener”而不是“f:setPropertyActionListener”,我会得到相同的结果,那么bean就是重构 example.xhtml ExampleBean.java import javax.faces.component.FacesComponent; import javax.faces.component.UINamingContainer; @FacesComponent(“com.bean.ExampleBean”) public class ExampleBean extends UINamingContainer { private Integer userId; private String name; private boolean renderUserId; private boolean renderName; }

JSF如何找到使用@ManagedBean注释的bean?

据我所知,对于使用@Annotations(或C#中的[Attributes]),您必须引用类元数据,以便您可以询问该类是否已注释(属性)。 我的问题是JSF实现如何找到所有使用@ManagedBean注释的类? 它是否扫描类路径中的所有类? 或者有没有办法实际“查询”JVM的注释类? 我问这个是因为当我直接在我的web项目中添加带注释的支持bean时,没有问题。 但我在JAR文件中定义的bean(可跨项目重用)未注册。 有什么东西我必须告诉MyFaces指导哪些JAR文件看? 此外,使用注释引入了许多不错的编程模式。 我想知道我是否能以某种方式找到所有带注释的类……

SelectOneMenu更新其他SelectOneMenu

我想在选择第一个SelectOnMenu的任何项目时更新第二个SelectOneMenu。 就像现在一样,我从ManagedBean获取SelectOneMenus的值。 我想我要使用AJAX(jquery)将参数发送到ManagedBean。 … … …

从servlet访问JSF会话作用域bean,由嵌入在JSF webapp中的applet调用

我需要从servlet访问会话范围的bean。 我已经试过了 UserBean userBean = (UserBean) request.getSession().getAttribute(“userBean”); 如本文所述。 但是我只得到null作为结果,尽管UserBean的实例是alreay instatiated。 这些是我用于userBean的注释/导入: import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; @ManagedBean @SessionScoped public class UserBean implements Serializable{ … } 一些背景为什么我无法摆脱servlet:我的jsf页面中有一个文件上传小程序。 这个小程序需要一个地址,它可以发送它的POST请求。 (我无法编辑此post请求以添加更多字段或其他内容)。 然后我的servlet的post方法存储文件。 托管bean无法完成此作业,因为必须使用@MultiPartConfig注释servlet,并且我无法将此批注添加到jsf托管bean。

如何通过BeanManager创建和销毁CDI(焊接)托管Bean?

我正在尝试使用BeanManager而不是Instance .select()。get()创建CDI托管bean的实例。 这被建议作为我已经使用ApplicationScoped bean和他们的家属的垃圾收集的问题的解决方法 – 请参阅CDI应用程序和依赖范围可以合谋影响垃圾收集? 为背景和这建议的解决方法。 如果在ApplicationScoped bean上使用Instance编程查找方法,Instance对象和从中获取的任何bean最终都依赖于ApplicationScoped bean,因此共享它的生命周期。 但是,如果使用BeanManager创建bean,则会在Bean实例本身上设置句柄,并且显然可以明确地销毁它,我理解这意味着它将被GCed。 我目前的方法是在BeanManagerUtil类中创建bean,并返回Bean,实例和CreationalContext的复合对象: public class BeanManagerUtil { @Inject private BeanManager beanManager; @SuppressWarnings(“unchecked”) public DestructibleBeanInstance getDestructibleBeanInstance(final Class type, final Annotation… qualifiers) { DestructibleBeanInstance result = null; Bean bean = (Bean) beanManager.resolve(beanManager.getBeans(type, qualifiers)); if (bean != null) { CreationalContext creationalContext = beanManager.createCreationalContext(bean); if (creationalContext != null) { T […]

Java EE 6:目标无法访问,标识符’helloBean’已解析为null

我想尝试一个简单的JSF 2教程示例。 我在Eclipse中使用动态Web项目并发布到Glassfish 3服务器(运行 – >在服务器上运行)。 第一个index.xhtml页面正确加载,但是当我必须访问托管bean时,会显示以下错误: /index.xhtml @14,48 value=”#{helloBean.name}”: Target Unreachable, identifier ‘helloBean’ resolved to null 我已经看过关于这个主题的各种其他讨论,但是解决方案对我来说似乎永远不会起作用(例如,添加beans.xml,根据命名约定给托管bean命名等)。 任何帮助,将不胜感激。 这是我目前正在使用的代码: 的index.xhtml JSF 2.0 Hello World JSF 2.0 Hello World Example – hello.xhtml response.xhtml: JSF 2.0 Hello World JSF 2.0 Hello World Example – welcome.xhtml Welcome #{helloBean.name} 管理豆: package java.hello1; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; import java.io.Serializable; […]

Field.get(obj)返回注入的CDI托管bean上的所有空值,而手动调用getter则返回正确的值

我试图通过reflection从JSF页面的支持bean访问某些字段的值。 问题是,当我使用getter时,我得到了正确的值但是当我使用必要字段的get(obj)方法时,我总是得到一个返回的null值。 获取beanObject: ELContext elcontext = FacesContext.getCurrentInstance().getELContext(); Object beanObject = FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elcontext, null, beanName); 要在不使用getter的情况下获取字段值,请执行以下操作: List fields = new ArrayList(); ParamsBuilder.getAllFields(fields, beanClass); for(Field field: fields) { field.setAccessible(true); System.out.println(field.getName() + “: ” + field.get(beanObject)); //just to see if it works } getAllFields方法具有以下实现: public static List getAllFields(List fields, Class type) { for (Field field: type.getDeclaredFields()) { fields.add(field); } […]