有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JPA空指针异常

我不熟悉java环境,但我必须开发一个java项目,我发现了JPA,因为我了解像微软实体框架这样的技术

我在youtube上浏览了下面的教程,但我遇到了一个空指针异常,但我无法理解发生了什么,因为我对教程做了同样的事情。我的项目结构如下。我有一个jsp文件,我使用这个文件作为主页面,所以我从这个文件运行项目。我包括索引。xhtml是必要的。您还可以找到此文件和index2。java文件(其“JSF托管Bean”)的内容如下

问题出现在“tablo1facadolocal.create(tbl1);”线路

如果你能发现问题,这将是伟大的,但如果你建议另一种方式或类似实体框架的东西,它也适用于我

http://www.youtube.com/watch?v=4HhRF20-Jhs

enter image description here

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) 个答案

  1. # 1 楼答案

    你有两个选择。首先是

    try
    {
        index2 indx=(index2)new   
        InitialContext().lookup(index2.class.getName());
    }
    catch(NamingException e)
    {
        out.println(e.getMessage());
    }
    
    indx.setTablo1Values();
    

    在上面的例子中,您将index2视为一个EJB。当bean是EJB时,您不能创建相同的实例。您需要容器(服务器)来为您创建它
    第二个选项是使用JSP标记访问is,因此
    #{index2.setTablo1Values()}
    我认为方法2可能会给您带来一些问题,请阅读here