Foros del Web » Soporte técnico » Ayuda General »

Error al usar un Dao con JSF

Estas en el tema de Error al usar un Dao con JSF en el foro de Ayuda General en Foros del Web. Hola he estado empezado a usar jsf en su version 2.2, estoy siguiendo un tutorial que encontre por los foros y me encuentro con un ...
  #1 (permalink)  
Antiguo 22/02/2014, 19:47
 
Fecha de Ingreso: febrero-2014
Ubicación: Loja
Mensajes: 1
Antigüedad: 5 años, 11 meses
Puntos: 0
Pregunta Error al usar un Dao con JSF

Hola he estado empezado a usar jsf en su version 2.2, estoy siguiendo un tutorial que encontre por los foros y me encuentro con un error que ya llevo dias, intentando solucionarlo pero no se mismo cual sera el origen del problema espero que me puedan ayudar: El error que tengo es que al mandar a correr la aplicación el servidor me manda el siguiente mensaje:
"An Error Occurred:

No se puede crear la instancia de clase: DAO.ClienteImplDao."

No se que hize mal tengo las siguientes clases:

*Mi clase Cliente
@Entity
@Table(name="Clientes")
public class Cliente implements Serializable{

@Id
private int DNI;
private static final Long serialVersionUID= 1L;
private String nombres;
private String apellidos;
private String sexo;
private int edad;

public int getDNI() {
return DNI;
}

public void setDNI(int DNI) {
this.DNI = DNI;
}

public String getNombres() {
return nombres;
}

public void setNombres(String nombres) {
this.nombres = nombres;
}

public String getApellidos() {
return apellidos;
}

public void setApellidos(String apellidos) {
this.apellidos = apellidos;
}

public String getSexo() {
return sexo;
}

public void setSexo(String sexo) {
this.sexo = sexo;
}

public int getEdad() {
return edad;
}

public void setEdad(int edad) {
this.edad = edad;
}
}

*Mi clase HibernateHelper

public class HibernateHelper {

private static SessionFactory sf;
public static final ThreadLocal session = new ThreadLocal();

public static synchronized void init() {
if (sf != null) {
return;
}
System.out.println("Initializing Hibernate");
try {
Configuration cfg = new Configuration().configure();
sf = cfg.buildSessionFactory();
} catch (Exception he) {
System.err.println("Unable to create session factory from configuration");
he.printStackTrace();
throw new RuntimeException("Unable to "
+ "create session factory from configuration", he);
}
System.out.println("Hibernate initialized");
}


public static SessionFactory sessionFactory() {
if (sf == null) {
init();
}
return sf;
}

public static void destroy() {
if (sf != null) {
try {
sf.close();
} catch (HibernateException he) {
he.printStackTrace();
}
}
sf = null;
System.out.println("Hibernate resources released");
}

public static void closeSession() throws HibernateException {
Session s = (Session) session.get();
session.set(null);
if (s != null) {
s.close();
}
}


public static Session openSession() throws HibernateException {
if (sf == null) {
init();
}
Session s = (Session) session.get();
if (s == null) {
s = sf.openSession();
session.set(s);
}
return (s);
}


}

* Mi interface "Generico"

public interface Generico {

public void guardar(Object obj);
public void actualizar(Object obj);
public void borrar(Object obj);
public void inicializar(Object obj);
public void flush();
public void merge(Object obj);

}

*Mi clase ClienteDAO

public class ClienteDAO implements Generico, Serializable {
Session session;

public ClienteDAO(){
session=HibernateHelper.openSession();
}

@Override
public void guardar(Object obj) {

try {
session.beginTransaction();
session.saveOrUpdate(obj);
session.getTransaction().commit();
} catch (RuntimeException e) {
e.printStackTrace();
}

}

@Override
public void actualizar(Object obj) {
session.beginTransaction();
session.refresh(obj);
session.getTransaction().commit();
}

@Override
public void borrar(Object obj) {
session.beginTransaction();
session.delete(obj);
session.getTransaction().commit();
}

@Override
public void inicializar(Object obj) {
Hibernate.initialize(obj);
}



@Override
public void flush() {
session.flush();
}

@Override
public void merge(Object obj) {
session.beginTransaction();
session.merge(obj);
session.getTransaction().commit();
}

}

*Mi clase ClientImplDao

@ManagedBean(name = "clienteBeanL")
@SessionScoped
public class ClienteImplDao implements Serializable {
private Cliente c;
private ClienteDAO dao;

public ClienteImplDao() {
dao = new ClienteDAO();
}

public Cliente getC() {
return c;
}

public void setC(Cliente c) {
this.c = c;
}

public void submit(){

dao.guardar(c);


}

}

El error es que no me deja crear el bean "clienteBeanL" cuando le quito la anotacion ManagedBean corre la aplicacion y se despliega la vista, pero si pongo anotacion me bota el error que comento al principio del post:

<h:body>
<h:form>

<div id="top" class="top">
<div style="text-align:center;">

<img src="centro.png" width="800" />

</div>

</div>

<div id="left">
<p:growl id="messages" autoUpdate="true"/>

<p:menu>
<p:menuitem value="Gestionar Clientes" action="gestionclientes" />
<p:menuitem value="Gestionar Estacionamientos" url="#" />
<p:menuitem value="Gestionar Reportes" url="#" />
<p:menuitem value="Validar Pagos" url="#"/>
<p:menuitem value="Politicas de Funcionamiento" url="#" />
</p:menu>
</div>
<div id="content" class="left_content">
<p:growl id="growl" showDetail="true"/>
<center>
<h3>SISTEMA PARA EL ESTACIONAMIENTO DEL CENTRO COMERCIAL REINA DEL CISNE </h3>
</center>

<p:panel header="Editar/Crear Cliente" footer="GAD LOJA!">
<h:outputText value="Bienvenido al sistema" />

<!--Comienzo del Formulario Editar Cliente-->

<p:panel header="EDITAR/CREAR CLIENTE">
<p:messages />

<h:panelGrid columns="8" cellpadding="5">

<h:outputLabel for="dni" value="DNI:" />
<p:inputText id="dni" value="#{clienteBeanL.c.DNI}" label="DNI" required="True"
>
<f:validateLength minimum="10" />
</p:inputText>
<p:message for="dni" />
<h:outputText value="" />


<h:outputLabel for="nombres" value="Nombre:" />
<p:inputText id="nombres" value="#{clienteBeanL.c.nombres}" label="Error en nombre">
<f:validateLength minimum="3" />
</p:inputText>
<p:message for="nombres" />
<h:outputText value="" />



<h:outputLabel for="apellidos" value="Apellidos:" />
<p:inputText id="apellidos" value="#{clienteBeanL.c.apellidos}" label="Error en Apellidos" required="True">
<f:validateLength minimum="3" />
</p:inputText>
<p:message for="apellidos" />
<h:outputText value="" />

<h:outputLabel for="edad" value="Edad:" />
<p:inputText id="edad" value="#{clienteBeanL.c.edad}" label="Erro en campo edad" required="True"/>

<p:message for="edad" />
<h:outputText value="" />


<h:outputLabel for="sexo" value="Sexo:" />
<h:inputText id="sexo" value="#{clienteBeanL.c.sexo}" label="Error"
required="True"/>
<p:message for="sexo" />
<h:outputText value="" />

</h:panelGrid>


</p:panel>


<div>
<p:commandButton value="GUARDAR" ajax="false" icon="ui-icon-check"
action="#{clienteBeanL.submit()}"/>

</div>
</p:panel>
</div>

</h:form>
</h:body>


Espero que me puedan ayudar, estaba muy entusiasmado con jsf pero no logro encontrar una solucion, ojo que ya prove cambiando el ambito del managed bean a request y ni asi funko

Última edición por jcgonzalezo; 22/02/2014 a las 19:50 Razón: se me fue una especificacion

Etiquetas: dao, jsf, usar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:32.