我正在关注一些关于 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 注释来做这件事 :) 而且代码还没有完成!