HTTP状态500.当我用datatable链接其他页面时java.lang.NullPointerException

时间:2014-12-18 13:34:18

标签: hibernate jsf

您好我是hibernate,PrimeFaces,JSF和Spring的新手。我正在尝试制作一个有效的代码。

我有Empresa.java,EmpresaDAOImplEmpresaServiceImplEmpresaBean。这段代码在屏幕上显示了每行中带有radiobutton的数据表并且它可以工作。现在我已经实现了新的类LDiario.java,LDiarioDAOImplLDiarioServiceImplLDIarioBeanEmpresaLdiario已经建立了关系oneToMany。但是当我按下Empresa列表中的按钮进入其他页面并向我显示其他数据表Ldiario时,我不知道如何制作。对不起我在学英语。非常感谢你。

错误

Grave: Error Rendering View[/pages/menu/menuPrincipal.xhtml]
javax.el.ELException: /pages/menu/menuPrincipal.xhtml @17,70 value="#{ldiarioBean.getLDiarioList()}": java.lang.NullPointerException
    at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:114)
    at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
    at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)

Empresa.java

@Entity
@Table(name = "empresas")
public class Empresa implements Serializable{

@Id 
@Column(name = "CLAVE")
@GeneratedValue private Integer CLAVE;

@OneToMany
@JoinColumn(name = "empresa")  
private List<LDiario> ldiarios; 

LDiario.java

@Entity
@Table(name = "LDIARIO2014")
public class LDiario implements Serializable{

@Id 
@Column(name = "CLAVE")
@GeneratedValue private Integer CLAVE;  

@ManyToOne  
@JoinColumn (name = "empresa") 
private Empresa empresa;

EmpresaBean.java

@ManagedBean(name="empresaBean")
@ViewScoped
@Component
public class EmpresaBean {

    @Autowired
    private EmpresaService empresaService;
    private Empresa empresa;
    private Empresa selectedEmpresa;


    public EmpresaService getEmpresaService() {
        return empresaService;
    }

    public Empresa getSelectedEmpresa() {
        return selectedEmpresa;
    }

    public void setSelectedEmpresa(Empresa selectedEmpresa) {
        this.selectedEmpresa = selectedEmpresa;
    }

    public void setEmpresaService(EmpresaService empresaService) {
        this.empresaService = empresaService;
    }

    public EmpresaBean(){
    }

    public List<Empresa> getEmpresaList(){

        return empresaService.getAll();
    }

    public Empresa getEmpresa() {
        return empresa;
    }
    public void setEmpresa(Empresa empresa) {
        this.empresa = empresa;
    }  

    public String View() {

        return "/pages/menu/menuPrincipal?faces-redirect=true";
    }
}

LDiarioBean.java

@ManagedBean(name="ldiarioBean")
@ViewScoped
@Component
public class LDiarioBean {

    private LDiario ldiario;
    @Autowired
    private LDiarioService ldiarioservice;

    private LDiario selectedLdiario;

    public LDiarioService getLdiarioservice() {
        return ldiarioservice;
    }
    public void setLDiarioservice(LDiarioService ldiarioservice) {
        this.ldiarioservice = ldiarioservice;
    }

    public LDiarioBean(){

    }
    public LDiario getLdiario() {
        return ldiario;
    }
    public void setLdiario(LDiario ldiario) {
        this.ldiario = ldiario;
    } 
    public LDiario getSelectedLdiario() {
        return selectedLdiario;
    }
    public void setSelectedLdiario(LDiario selectedLdiario) {
        this.selectedLdiario = selectedLdiario;
    }    

    public List<LDiario> getLDiarioList(){  
        return ldiarioservice.getAll();
    }

    public LDiario getLDiario() {
        return ldiario;
    }
    public void setLDiario(LDiario ldiario) {
        this.ldiario = ldiario;
    } 
}

EmpresaServiceImpl.java

@Service
@Repository
public class EmpresaServiceImpl implements EmpresaService {

    @Autowired
    private EmpresaDao empresaDao;

    @Override
    public List<Empresa> getAll() {
        return empresaDao.findAll();
    }
}

LDiarioServiceImpl.java

@Service
@Repository
public class LDiarioServiceImpl implements LDiarioService {

    @Autowired
    private LDiarioDao ldiarioDao;

    @Override
    public List<LDiario> getAll() {
        return ldiarioDao.findAll();
    }

EmpresaDAOImpl.java

@Transactional
@Repository
public class EmpresaDaoImpl implements EmpresaDao{

    @Autowired
    private SessionFactory sessionFactory;

    @Override
    public List<Empresa> findAll() {
        return sessionFactory.getCurrentSession().createQuery("from Empresa").list();
    }
}

LDiarioDAOImpl.java

@Transactional
@Repository
public class LDiarioDaoImpl implements LDiarioDao{

    @Autowired
    private SessionFactory sessionFactory;

    @Override
    public List<LDiario> findAll() {
        return sessionFactory.getCurrentSession().createQuery("from LDiario").list();
    }
}

的index.xhtml

   <h:head>
      <title>Lista con Java Server Faces</title>
   </h:head>
   <h:body> 

      <h:form id="form">
    <p:dataTable id="radioDT"  var="emp" value="#{empresaBean.getEmpresaList()}"  
                selection="#{empresaBean.selectedEmpresa}" rowKey="#{emp.CLAVE}">



    <f:facet name="header">
            Lista de Empresas
         </f:facet>
         <p:column selectionMode="single" style="width:16px;text-align:center"/>         
      <p:column headerText="Id">
       <h:outputText value="#{emp.CLAVE}" />
       </p:column>

         <p:column headerText="Nombre Empresa">
       <h:outputText value="#{emp.NOMBRE}" />
       </p:column>

         <p:column headerText="AÑO">
       <h:outputText value="#{emp.EJERCICIO}" />
       </p:column>

       <!-- "#{empresaBean.selectedEmpresa}" -->
<f:facet name="footer">

    <p:commandButton action="#{empresaBean.View}" value="Seleccionar" title="Ir Menu" rowKey="#{emp.CLAVE}" >
 <f:setPropertyActionListener target="#{empresaBean.empresa}" value="#{empresaBean.selectedEmpresa}" />
</p:commandButton>

menuPrincipal.xhtml (此页面中的错误)

<h:form>
    <!--   <h:outputText value="#{empresaBean.empresa}" />  -->

    <h:outputText value="#{empresaBean.selectedEmpresa}" /> 

        <p:dataTable   var="ld" value="#{ldiarioBean.getLDiarioList()}">
        <!-- selection="#{ldiarioBean.selectedLdiario}" rowKey="#{ld.CLAVE}" -->

        <f:facet name="header">
            Listado Diario
         </f:facet>
         <p:column selectionMode="single" style="width:16px;text-align:center"/>         
      <p:column headerText="ASIENTO">
       <h:outputText value="#{ld.ASIENTO}" />
       </p:column>

         <p:column headerText="FECHA">
       <h:outputText value="#{ld.FECHA}" />
       </p:column>

         <p:column headerText="SUBCUENTA">
       <h:outputText value="#{ld.SUBCUENTA}" />
       </p:column>

           <p:column headerText="CONCEPTO">
       <h:outputText value="#{ld.CONCEPTO}" />
       </p:column>

           <p:column headerText="DEBE">
       <h:outputText value="#{ld.DEBE}" />
       </p:column>

           <p:column headerText="HABER">
       <h:outputText value="#{ld.HABER}" />
       </p:column>

</p:dataTable>

enter image description here

我认为错误发生在

中的LDiarioDAO.java中
@Override
    public List<LDiario> findAll() {
        return sessionFactory.getCurrentSession().createQuery("from LDiario").list();
    }

但我不知道解决方案。你能帮我吗?我在这个页面上寻找 https://gerrydevstory.com/2013/07/02/hibernate-one-to-many-relationship/

0 个答案:

没有答案