我不熟悉java环境但是我必须开发一个java项目,我发现了JPA,因为我理解像微软实体框架这样的技术。
我在youtube上经历了下面的教程,但我正在使用空指针异常,但我无法理解发生了什么,因为我在教程中做了同样的事情。我的项目结构如下。我有一个jsp文件,我使用这个文件作为主页面,所以我从这个文件运行项目。因为必要,我包括index.xhtml。您还可以在下面找到此文件和index2.java文件(其" JSF Managed Bean")。
问题出在" tablo1FacadeLocal.create(tbl1);"线。
如果你能发现问题会很好,但如果你建议另一种方式或类似实体框架的东西,它也适用于我。
http://www.youtube.com/watch?v=4HhRF20-Jhs
Tablo1和Tablo2是我的表,所以我创建了Tablo1.java和Tablo2.java"实体类来自数据库"。
然后我为实体类做了新的>"会话Bean"并在ejb包中创建了外墙。
最后我做了新的>" JSF Managed Bean"。 Managed Bean名称是index2.java
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);
}
}
答案 0 :(得分:0)
您有两种选择。第一个是
try
{
index2 indx=(index2)new
InitialContext().lookup(index2.class.getName());
}
catch(NamingException e)
{
out.println(e.getMessage());
}
indx.setTablo1Values();
在上面你将index2视为EJB。当bean是EJB时,您无法创建相同的实例。您需要容器(服务器)为您创建它
第二个选项是使用JSP标签进行访问
#{index2.setTablo1Values()}
我认为方法2可能会给您一些问题,以获取更多信息,请阅读here