|Hola gente como estan, tengo una consulta, estoy haciendo un sistemita con Jsf 2.0 Hibernate, RichFaces 4, todo en eclipse, pero tengo un problema a la hora de ahcer un alta de una tabla, les muestro el bean y el xhtml
Bean
Código:
package org.controlf.java.jsf.p1.model.domain;
import java.io.Serializable;
import java.util.Date;
public class Paciente extends BaseDominio implements Serializable{
/**
*
*/
private static final long serialVersionUID = -3891274376800783333L;
private Integer pacienteId;
private Integer dni;
private String nombre;
private Date fechaNacimiento;
private Integer numeroHc;
private ObraSocial obraSocial;
public Paciente(Integer pacienteId, Integer dni, String nombre, Date fechaNacimiento, Integer numeroHc, ObraSocial obraSocial) {
this.pacienteId = pacienteId;
this.dni = dni;
this.nombre = nombre;
this.fechaNacimiento = fechaNacimiento;
this.numeroHc = numeroHc;
this.obraSocial = obraSocial;
}
public Paciente() {
}
public Integer getPacienteId() {
return pacienteId;
}
public void setPacienteId(Integer pacienteId) {
this.pacienteId = pacienteId;
}
public Integer getDni() {
return dni;
}
public void setDni(Integer dni) {
this.dni = dni;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public Date getFechaNacimiento() {
return fechaNacimiento;
}
public void setFechaNacimiento(Date fechaNacimiento) {
this.fechaNacimiento = fechaNacimiento;
}
public Integer getNumeroHc() {
return numeroHc;
}
public void setNumeroHc(Integer numeroHc) {
this.numeroHc = numeroHc;
}
public ObraSocial getObraSocial() {
return obraSocial;
}
public void setObraSocial(ObraSocial obraSocial) {
this.obraSocial = obraSocial;
}
}
El xhtml
Código:
<!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://java.sun.com/jsf/html"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head></h:head>
<h:body>
<ui:composition template="/templates/masterLayout.xhtml">
<ui:define name="windowTitle">
Reservas on line - Turnos
</ui:define>
<ui:define name="funciones">
<ui:include src="/sections/common/funciones.xhtml" />
</ui:define>
<ui:define name="content">
<div class="article">
<h2>
<h:outputText value="Turno" />
</h2>
<h:form>
<rich:panel header="Crear" id="panel">
<h:panelGrid columns="3" width="100%">
<h:outputText id="labelPaciente" value="Paciente" />
<rich:select id="inputPaciente" defaultLabel="Selecciona un Paciente"
value="#{turnosController.turno.paciente.pacienteId}" required="true" label="Paciente"
style="width: 208px; ">
<f:selectItems value="#{selectOneLists.pacientes}"
var="paciente" itemLabel="#{paciente.nombre}"
itemValue="#{paciente.pacienteId}"></f:selectItems>
</rich:select>
<rich:message for="inputPaciente"/>
<h:outputText id="labelProfesional" value="Profesional" />
<rich:select id="inputProfesionales" defaultLabel="Selecciona un Profesional"
value="#{turnosController.turno.profesional.profesionalId}" required="true" label="Profesional"
style="width: 208px; ">
<f:selectItems value="#{selectOneLists.profesionales}"
var="profesional" itemLabel="#{profesional.nombre}"
itemValue="#{profesional.profesionalId}"></f:selectItems>
</rich:select>
<rich:message for="inputProfesionales"/>
<h:outputText id="labelFechaTurno"
value="Fecha de Turno" />
<rich:calendar id="fechaTurno"
value="#{turnosController.turno.fechaTurno}"
required="true"
requiredMessage="La fecha es requerida"
style="width: 208px;" datePattern="dd/MM/yyyy">
</rich:calendar>
<rich:message for="fechaTurno"/>
<h:outputText id="labelEstado" value="Estado" />
<h:inputText id="estado"
value="#{turnosController.turno.estado}"
label="Estado" required="true"
style="width: 208px; ">
<f:validateLength minimum="5" maximum="12" />
</h:inputText>
<rich:message for="estado"/>
<a4j:commandButton value="Aceptar" action="#{turnosController.crear(turnosController.turno)}" execute="@form">
</a4j:commandButton>
</h:panelGrid>
</rich:panel>
</h:form>
</div>
</ui:define>
</ui:composition>
</h:body>
</html>
El problema es que al ahcer aceptar para cargar los datos en la base de datos me da este error en los dos combos,
Código:
22/02/2012 12:15:13 org.richfaces.context.ExtendedPartialViewContextImpl processPartialExecutePhase
GRAVE: /views/turnoCreate.xhtml @30,32 value="#{turnosController.turno.paciente.pacienteId}": Objetivo inalcanzable, 'paciente' devolvió nulo
javax.el.PropertyNotFoundException: /views/turnoCreate.xhtml @30,32 value="#{turnosController.turno.paciente.pacienteId}": Objetivo inalcanzable, 'paciente' devolvió nulo
at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:100)
at org.richfaces.component.util.InputUtils.findConverter(InputUtils.java:123)
at org.richfaces.component.util.InputUtils$1.getConverterByProperty(InputUtils.java:56)
at org.richfaces.component.util.InputUtils.getConvertedValue(InputUtils.java:148)
at org.richfaces.component.util.InputUtils.getConvertedValue(InputUtils.java:137)
at org.richfaces.renderkit.InputRendererBase.getConvertedValue(InputRendererBase.java:50)
at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1028)
at javax.faces.component.UIInput.validate(UIInput.java:958)
at javax.faces.component.UIInput.executeValidate(UIInput.java:1209)
at javax.faces.component.UIInput.processValidators(UIInput.java:698)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1086)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1086)
at javax.faces.component.UIForm.processValidators(UIForm.java:244)
at org.richfaces.context.PartialViewExecuteVisitCallback.visit(PartialViewExecuteVisitCallback.java:55)
at org.richfaces.context.BaseExtendedVisitContext.invokeVisitCallback(BaseExtendedVisitContext.java:321)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1507)
at javax.faces.component.UIForm.visitTree(UIForm.java:335)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1518)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1518)
at org.richfaces.context.ExtendedPartialViewContextImpl.executeComponents(ExtendedPartialViewContextImpl.java:237)
at org.richfaces.context.ExtendedPartialViewContextImpl.processPartialExecutePhase(ExtendedPartialViewContextImpl.java:217)
at org.richfaces.context.ExtendedPartialViewContextImpl.processPartial(ExtendedPartialViewContextImpl.java:196)
at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1163)
at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:508)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Espero me puedan dar una mano, muchas gracias.