0

我正在关注一些关于 Java EE 的教程,试图自己做一个简单的例子。即使我在我的代码中键入完全相同的内容,它也不起作用。区别在于(我的和教程中的示例之间)我正在使用Eclipse Kepler(不是 NetBeans)和Apache Tomcat(不是 GlassFish)。

HTTP 状态 500 - javax.el.PropertyNotFoundException:目标无法访问,标识符“greetingManager”解析为 null

这是代码index.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets">

<h:head>
    <title>Yo Digga Yo</title>
</h:head>
<h:body>
    <h:form>
        <h:inputText value="#{greetingManager.name}" />
        <h:commandButton action="greet" value="click" />
    </h:form>
</h:body>
</html>

那是GreetingManager类:

package com.maja.greeting;

import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
import javax.inject.Named;


@Named
@SessionScoped
public class GreetingManager implements Serializable{

    private String name;

    public String getName() {
        return name;
    }

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

    public String getGreeting() {

        return "...";
    }
}

ant 最后,这就是 greet.xhtml:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets">

<h:head></h:head>
<h:body>
    <h2>#{greetingManager.greeting}</h2>
</h:body>
</html>

我已经为 @Named 和 @SessionScoped 注释导入了所需的 .jar 文件,因为 tomcat 不提供它们(?)

附言。本教程是关于 CDI 的,所以我有点“不得不”用 @Named 注释来做这件事 :) 而且代码还没有完成!

4

1 回答 1

0

您的 greetingManager 类应该是一个托管 bean,以便从您的 .xhtml 文件中访问它。为此,您需要添加

@ManagedBean

注解。

于 2014-04-22T11:48:28.253 回答