Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/02/2014, 19:47
jcgonzalezo
 
Fecha de Ingreso: febrero-2014
Ubicación: Loja
Mensajes: 1
Antigüedad: 10 años, 2 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