我正在编写一个JSF Web应用程序,而且我曾经有过主要的支持bean请求范围。我后来将其更改为session-scoped,现在我需要创建一个新的请求范围的辅助bean。我遵循了我的第一个请求范围的bean的格式,但我似乎无法完全调用构造函数。我已经使用JSF很长一段时间但我无法弄清楚为什么当我有一个请求范围的类以前工作得很好时它不会调用构造函数。 :-S
这是我的支持bean类:
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>
我正在使用ICEfaces 3.01框架,我认为它基于JSF 2.2。我之前运行了一个请求范围的支持bean,但我不能让这个新类工作。任何建议将不胜感激。提前谢谢!
答案 0 :(得分:2)
首先,您不必在构造函数中调用super(),而对于两个,您的注释提供了所有配置,因此您不需要faces-config.xml中的任何内容。这甚至可以解决你的问题:)
另外,您是否正确引用了请求bean?