Jsf 为什么不是';t我的请求范围的支持bean';调用的构造函数是什么?
我正在编写一个JSFWeb应用程序,并且我曾经对主支持bean请求的范围进行了限定。后来我将其更改为会话范围,现在我需要创建一个新的请求范围的支持bean。我遵循了我的第一个请求范围bean的格式,但我似乎根本无法调用构造函数。我已经使用JSF很长一段时间了,但我不明白为什么在我之前有一个请求范围的类工作正常时,它不会调用构造函数- 下面是我的支持bean类:Jsf 为什么不是';t我的请求范围的支持bean';调用的构造函数是什么?,jsf,javabeans,icefaces,Jsf,Javabeans,Icefaces,我正在编写一个JSFWeb应用程序,并且我曾经对主支持bean请求的范围进行了限定。后来我将其更改为会话范围,现在我需要创建一个新的请求范围的支持bean。我遵循了我的第一个请求范围bean的格式,但我似乎根本无法调用构造函数。我已经使用JSF很长一段时间了,但我不明白为什么在我之前有一个请求范围的类工作正常时,它不会调用构造函数- 下面是我的支持bean类: package brian.canadaShipping; import java.io.Serializable; import
package brian.canadaShipping;
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
@ManagedBean(name= "cpstcRequestBean")
@ViewScoped
public class CpstcRequestBean implements Serializable {
private static final long serialVersionUID = -5066913533772933899L;
public CpstcRequestBean()
{
super();
System.out.println("Hello, RequestBean!");
}
}
下面是我的faces-config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<faces-config
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">
<managed-bean>
<managed-bean-name>home</managed-bean-name>
<managed-bean-class>brian.canadaShipping.CpstcHomeBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
<description>handles initialization of pseudo-permanent data</description>
<managed-bean-name>cpstcApplicationBean</managed-bean-name>
<managed-bean-class>brian.canadaShipping.CpstcApplicationBean</managed-bean-class>
<managed-bean-scope>application</managed-bean-scope>
</managed-bean>
<managed-bean>
<description>- intializes HomeBean values which shouldn't be session scoped</description>
<managed-bean-name>cpstcRequestBean</managed-bean-name>
<managed-bean-class>brian.canadaShipping.CpstcRequestBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
</faces-config>
家
brian.canadaShipping.cpstchHomeBean
一场
处理伪永久数据的初始化
CPSTApplication Bean
brian.canadaShipping.cpstapplicationbean
应用
-初始化不应在会话范围内的HomeBean值
cpstcRequestBean
brian.canadaShipping.CpstcRequestBean
要求
我运行的是IceFaces3.01框架,我相信它是基于JSF2.2的。我以前运行过一个请求范围的支持bean,但我无法让这个新类工作。如有任何建议,将不胜感激。提前谢谢 首先,您不必在构造函数中调用super(),其次,您的注释提供了所有配置,因此您不需要faces-config.xml中的任何内容。这甚至可以解决您的问题:)
另外,您是否正确地引用了请求bean?这就是我如何设置原始会话bean的方法,我在没有faces配置内容的情况下尝试了它,但没有什么不同。我不确定正确引用请求bean是什么意思。框架应该在HTTP请求上自动调用请求bean(或者我的理解是这样的)。只有当有对它的引用时,即它实际上是在facelets视图中调用的,或者是从另一个bean调用的。噢!我现在将通过使用accessor/mutator方法生成一个变量并从我的xhtml文件中引用它来尝试一下。经验教训:总是在某个地方引用一个新的支持bean。注释要简单得多,而且不太XML化:)