java JPA空指针异常
我不熟悉java环境,但我必须开发一个java项目,我发现了JPA,因为我了解像微软实体框架这样的技术
我在youtube上浏览了下面的教程,但我遇到了一个空指针异常,但我无法理解发生了什么,因为我对教程做了同样的事情。我的项目结构如下。我有一个jsp文件,我使用这个文件作为主页面,所以我从这个文件运行项目。我包括索引。xhtml是必要的。您还可以找到此文件和index2。java文件(其“JSF托管Bean”)的内容如下
问题出现在“tablo1facadolocal.create(tbl1);”线路
如果你能发现问题,这将是伟大的,但如果你建议另一种方式或类似实体框架的东西,它也适用于我
http://www.youtube.com/watch?v=4HhRF20-Jhs
Tablo1和Tablo2是我的表,所以我创建了Tablo1。java和Tablo2。java“数据库中的实体类”
然后我做了新的>;“实体类的会话bean”,并在ejb包中创建facades
最后我做了新的>;“JSF托管Bean”。托管Bean名称是index2。爪哇
index2。jsp
<%@page import="Web.index2"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Hello World!</h1>
<%
index2 indx = new index2();
indx.setTablo1Values();
%>
</body>
</html>
index2。java
package Web;
import ejb.Tablo1FacadeLocal;
import entities.Tablo1;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
@ManagedBean
@SessionScoped
public class index2 {
@EJB
Tablo1FacadeLocal tablo1FacadeLocal;
public index2() {
}
public void setTablo1Values() {
Tablo1 tbl1 = new Tablo1();
tbl1.setClm1(5);
tbl1.setClmn2("fdfsfsdfs");
tablo1FacadeLocal.create(tbl1);
}
}
# 1 楼答案
你有两个选择。首先是
在上面的例子中,您将index2视为一个EJB。当bean是EJB时,您不能创建相同的实例。您需要容器(服务器)来为您创建它
第二个选项是使用JSP标记访问is,因此
#{index2.setTablo1Values()}
我认为方法2可能会给您带来一些问题,请阅读here