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;
}
}