【问题标题】:JSF 2.0 Annotation does not workJSF 2.0 注释不起作用
【发布时间】:2010-09-11 09:39:57
【问题描述】:

;嗨,

我正在使用 JSF 2.0 Mojarra 版本。 2.0.2-SNAPSHOT(使用maven获取)。

我正在尝试使用 Annotation 来设置 JSF bean,例如:

@ManagedBean
@RequestScoped
public class HelloBean {
    @ManagedProperty(value="test")
    private String name;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

注解不起作用,这意味着 HelloBean 类未配置为 JSF bean。为了说明这一点,我有以下页面

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core">
<head>
    <title>Hello World</title>

</head>
<body>
<f:view>
    Hello #{helloBean.name}
</f:view>
</body>

</html>

名称“test”应打印在页面上。但是当我在 Tomcat 6.20 和 JDK 1.6 上运行时,名称不显示。

如果我使用 faces-config.xml 配置 HelloBean,名称会正确显示在页面上。

我错过了什么?

【问题讨论】:

    标签: java jsf jsf-2


    【解决方案1】:

    如果您有任何faces-config.xml 文件,则需要将其声明为 JSF 2.0,而不是 JSF 1.2 或更低版本。

    <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">
    

    顺便说一下,Facelets 中不需要f:view

    【讨论】:

    • 谢谢巴鲁斯。修改faces-config.xml声明后,注解正常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-26
    • 2013-05-21
    • 1970-01-01
    • 2011-11-18
    • 2012-09-29
    • 2014-08-14
    • 2012-08-15
    相关资源
    最近更新 更多