使用JBoss 6.0.0.Final,Richfaces 3.3.3.Final,MyFaces 2.0.6,facelets 1.1.15.B1(RF 3的限制)。
我正在使用遗留项目,其中包含faces-config.xml
中定义的数百个bean。我想保留faces-config.xml中定义的那些,但是对新bean使用注释。但是,当我尝试这个时,我没有成功。由注释定义的bean,即
@ManagedBean
@ViewScoped
public class Foobar implements Serializable {
// ...
}
我的JSF页面无法访问bean。我相信我已经在faces-config.xml中使用正确的标题指定了2.0版本。
<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">
我还需要在faces-config.xml
中做些什么才能使用注释吗?
答案 0 :(得分:9)
在以下情况下,带注释的bean将失败:
/WEB-INF/faces-config.xml
未声明符合JSF 2.0。
@ManagedBean
属javax.annotation
个包而不是javax.faces.bean
。
Bean类未编译/内置于WAR /WEB-INF/classes
。
Bean打包在缺少/META-INF/faces-config.xml
的JAR文件中。
在EL中使用了错误的托管bean名称,根据Javabeans规范,它应该是第一个字符较低的bean类名称。因此,在您的特定示例中,#{fooBar}
应该有效,但#{FooBar}
不会。
Webapp 实际使用JSF 1.x库(您可以在服务器启动日志中读取JSF版本)。