【发布时间】:2019-02-22 09:39:08
【问题描述】:
我知道 StackOverflow 上已经有很多关于此的问题,但我已经挣扎了 5 个多小时,我只是不知道该怎么办了。我希望当有人看到我的情况时,他们可以为我指明正确的方向。我想我已经尝试了每一个注释组合,但我无法让它发挥作用。
我正在设置一个 Java EE 应用程序,简单的网络应用程序。目前在一个简单的页面中测试我的设置。相关文件如下。按下 xhtml 页面上的按钮时出现错误。
javax.el.PropertyNotFoundException: /greeting.xhtml @12,69 action="#{testServlet.createNewUser}": Target Unreachable, identifier 'testServlet' resolved to null
greeting.xhtml
<?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="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html">
<h:head>
<title>Test Page</title>
</h:head>
<h:body>
<h:form>
<h:commandButton value="Go"
action="#{testServlet.createNewUser}"/>
</h:form>
</h:body>
</html>
TestServlet.java
package kwetter.admin.test;
import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
import javax.inject.Inject;
import javax.inject.Named;
import kwetter.domain.entities.User;
import kwetter.logic.beans.TestBean;
@Named
@SessionScoped
public class TestServlet implements Serializable {
@Inject
private TestBean testBean;
public TestServlet() {
System.out.println("TEST CREATED ");
}
public String createNewUser() {
User user = new User();
testBean.createUser(user);
return "cool";
}
}
TestBean.java
package kwetter.logic.beans;
import java.io.Serializable;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import kwetter.database.daos.interfaces.IUserDao;
import kwetter.domain.entities.User;
@Stateless
public class TestBean implements Serializable
{
@EJB
private IUserDao userDao;
public TestBean() {
}
public boolean createUser(User user) {
userDao.save(user);
return true;
}
}
IUserDao 声明
public interface IUserDao extends IDao<User>
以及实现:
@Stateless
public class UserDao implements IUserDao
不同模块的依赖关系在 pom 文件中处理。 pom的示例部分:
<dependency>
<groupId>com.woutervanacht.kwetter</groupId>
<artifactId>logic</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
其他:
- 我在 WEB-INF 中有一个空的
beans.xml(不确定是否需要它,开始时没有并阅读了几次 -
faces-config.xml根元素中没有子元素 -
web.xml带有 servlet 映射。
我不想用太多信息来混淆这个问题。如果您需要任何相关的内容,我会很乐意分享。
提前感谢您与我一起思考。
【问题讨论】:
-
您是否尝试过stackoverflow.com/questions/30128395/… 中描述的步骤? CDI 托管 bean 的第 1 部分...
-
@nikolairiedel 是的。与我的情况唯一相关的项目符号是 CDI 部分的第三部分(因为我使用的是
@Named)。我检查了导入,它是正确的 CDI 之一。
标签: java maven jakarta-ee payara java-ee-8