0

How do i solve the error : "/index.xhtml @11,62 value="#{mbBdd.nombre}": Target Unreachable, identifier 'mbBdd' resolved to null". Im trying to insert a name, last name, and age into inputText fields and i get this error. I am using a single Entity table with EJB, JPA, JSF, ManagedBean.

Note: My database is connected to jdbc:dervy and my table was created by the entity class.

Here is my xhtml code:

    <?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"
      xmlns:f="http://xmlns.jcp.org/jsf/core">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
        <h:form>
            <p>Nombre: <h:inputText value="#{mbBdd.nombre}"/>  </p>
            <p>Apellido: <h:inputText value="#{mbBdd.apellido}"/></p>
            <p>Edad: <h:inputText value="#{mbBdd.edad}"/></p>
            <h:commandButton value="Crear" action="#{mbBdd.crearPersona()}"/>

            <h:dataTable var="fila" value="#{mbBdd.personas()}">
                <h:column>
                    <f:facet name="header">ID</f:facet>
                    #{fila.id}
                </h:column>
                <h:column>
                    <f:facet name="header">Nombre</f:facet>
                    #{fila.nombre}
                </h:column>
                <h:column>
                    <f:facet name="header">Apellido</f:facet>
                    #{fila.apellido}
                </h:column>
                <h:column>
                    <f:facet name="header">Edad</f:facet>
                    #{fila.edad}
                </h:column>
            </h:dataTable>       
        </h:form>
    </h:body>
</html>

Here is my EJB code:

package Bdd;

import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

@Stateless
public class EjbBdd {

    @PersistenceContext(unitName="bdd")
    EntityManager em;

    public void nuevo(Persona persona)
    {
        em.persist(persona);
    }

    public List<Persona> todosPersona()
    {
        Query q = em.createNamedQuery("personas");
        return q.getResultList();
    }

    public Persona getPersonaById(String id)
    {
        return em.find(Persona.class, Long.parseLong(id));
    }
}

My managedBean code:

package Bdd;

import java.io.Serializable;
import java.util.List;
import javax.annotation.ManagedBean;
import javax.ejb.EJB;
import javax.enterprise.context.SessionScoped;

@ManagedBean
@SessionScoped
public class MbBdd implements Serializable{

    @EJB

    private EjbBdd bdd;
    private Persona persona;

    public MbBdd() {
        persona = new Persona();
    }

    public Persona getPersona() {
        return persona;
    }

    public void setPersona(Persona persona) {
        this.persona = persona;
    }

    public List<Persona> personas()
    {
        return bdd.todosPersona();
    }

    public String crearPersona()
    {
        bdd.nuevo(persona);
        return null;
    }
}

My entity class Person:

package Bdd;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQuery;

@Entity
@NamedQuery(name = "personas", query = "select p from Persona p")
public class Persona implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String nombre;
    private String apellido;
    private int edad;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getApellido() {
        return apellido;
    }

    public void setApellido(String apellido) {
        this.apellido = apellido;
    }

    public int getEdad() {
        return edad;
    }

    public void setEdad(int edad) {
        this.edad = edad;
    }   
}
E Alexis T
  • 100
  • 9

0 Answers0