2017-04-18 14 views
0

誰もが、SelectOneMenuのデータを評価し、一致するものを返すために変換を作成する手助けはできますか?誰かがデータベースからSelectOneMenuの料金を手伝ってくれますか?

私は現在アプリケーションを実行していますが、アプリケーションを実行すると、次のエラーがスローされます。 "変換エラーの設定値が 'nullコンバータ'の場合 '1'。

レンダラーが処理しているものを表示するためにSystem.out.println()を使用してコントロールを追加しましたが、変換クラスも入力していません。

@FacesConverter("conversorMovil") 

public class ConversorMovil implements Converter { 

    private Session sesion; 
    private Transaction transaccion; 

    @Override 
    public Object getAsObject(FacesContext fc, UIComponent uic, String value){ 



     if(value != null && value.trim().length() > 0) { 
      try { 
       this.sesion = HibernateUtil.getSessionFactory().openSession(); 
       this.transaccion = sesion.beginTransaction(); 

       DaoMovil daoM = new DaoMovil(); 
       //Moviles movil = (Moviles) fc.getExternalContext().getApplicationMap().get("mbMovil"); 
       Moviles movil=null; 
       try { 
        movil = daoM.buscarPorCodigo(this.sesion, Integer.parseInt(value)); 
        this.transaccion.commit(); 
       } catch (Exception ex) {  
      Logger.getLogger(ConversorMovil.class.getName()).log(Level.SEVERE, null, ex); 
       } 
       System.out.println("Valor devuelto por getAsObject()" + movil.toString()); 
       return movil;  
      }catch(NumberFormatException e) { 
       throw new ConverterException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Conversion Error", "Not a valid theme.")); 
      }finally{ 
       this.sesion.close(); 
      } 
     } 
     else{ 
      return null; 
     } 

    } 

    @Override 
    public String getAsString(FacesContext fc, UIComponent uic, Object object) { 
     if(object != null) { 
      System.out.println("Valor devuelto por getAsString()" + String.valueOf(((Moviles) object).getIdmovil())); 
      return String.valueOf(((Moviles) object).getIdmovil()); 
     } 
     else { 
      return null; 
     } 
    } 
}   

このコンバータは、データベースにロードされた車のデータを返す必要があり、次のよう

私のクラスがあります。

私のXHTMLは、次のとおりです。

<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets" 
    xmlns:h="http://xmlns.jcp.org/jsf/html" 
    xmlns:p="http://primefaces.org/ui" 
    xmlns:f="http://xmlns.jcp.org/jsf/core" 
    xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"> 

<body> 

    <ui:composition template="./../plantilla/plantilla.xhtml"> 

     <ui:define name="content"> 
      <h:form id="frmNuevoVale"> 
       <p:commandButton value="Nuevo Vale" onclick="PF('dialogoNuevoVale').show();"/> 
      </h:form> 

      <h2>Lista de Vales</h2> 

      <h:form id="frmListaVales"> 
       <p:growl id="mensajeGeneral" showDetail="true" sticky="false"/> 

       <p:dataTable id="tablaVales" var="fila" value="#{mbVale.todos}" paginator="true" rows="10" selection="#{mbVale.vale}" selectionMode="single" rowKey="#{fila.idvale}"> 

        <p:ajax event="rowSelect" update=":frmListaVales:detalleVale" oncomplete="PF('dialogoVale').show();"/> 

        <f:facet name="cabecera"> 
         Lista de Vales 
        </f:facet> 
        <p:column headerText="Número de Vale:"> 
         <h:outputText value="#{fila.idvale}" style="float:right"/> 
        </p:column> 
        <p:column headerText="Fecha Emisión"> 
         <h:outputText value="#{fila.fechaemision}" style="float:right"/> 
        </p:column> 
        <p:column headerText="Guardia"> 
         <h:outputText value="#{fila.guardias.idguardia}"/> 
        </p:column> 
        <p:column headerText="Anulado"> 
         <!-- <h:outputText value="#{fila.baja}"/> --> 
         <p:graphicImage value="/resources/iconos/aceptar.ico" rendered="#{fila.anulado == true}" style="center"/> 
        </p:column> 
        <p:column headerText="Fecha de Baja"> 
         <h:outputText value="#{fila.fechaanulacion}"/> 
        </p:column> 
        <p:column> 
         <p:commandButton value="Editar" actionListener="#{mbVale.buscarValeEditar(fila.idvale)}"/> 
        </p:column> 
        <p:column> 
         <p:commandButton value="Dar de Baja" actionListener="#{mbVale.buscarValeBaja(fila.idvale)}"/> 
        </p:column> 
       </p:dataTable> 

       <p:dialog header="Detalle de Vale" widgetVar="dialogoVale" resizable="false" width="300" showEffect="explode" hideEffect="explode"> 
        <p:panelGrid id="detalleVale" columns="2"> 
         <p:outputLabel value="Número de Vale:"/> 
         <h:outputText value="#{mbVale.vale.idvale}"/> 
         <p:outputLabel value="Fecha de Emisión:"/> 
         <h:outputText value="#{mbVale.vale.fechaemision}"/> 
         <p:outputLabel value="Emisor:"/> 
         <h:outputText value="#{mbVale.vale.guardias.idguardia}"/> 
         <p:outputLabel value="Anulado:"/> 
         <h:outputText value="#{mbVale.vale.anulado}"/> 
         <p:outputLabel value="Fecha de Baja:"/> 
         <h:outputText value="#{mbVale.vale.fechaanulacion}"/> 
        </p:panelGrid> 
       </p:dialog>      
      </h:form> 

      <h:form id="frmAltaVale"> 
       <p:dialog header="Nuevo Vale" widgetVar="dialogoNuevoVale" resizable="false" width="900" showEffect="explode" hideEffect="explode" > 
        <p:panelGrid id="nuevoVale" columns="3"> 
         <p:outputLabel value="Número de Vale:" for="txtIdentificador"/> 
         <p:outputLabel id="txtIdentificador" value="#{mbVale.vale.idvale}"> 
          <!--<f:validator validatorId="validadorVacio"/>--> 
         </p:outputLabel> 
         <p:message for="txtIdentificador"/> 
         <p:outputLabel for="txtMovil" value="Móvil:"/> 
         <p:selectOneMenu id="txtMovil" value="#{mbVale.vale.moviles}" style="width:175px" converter="#{conversorMovil}"> 
          <f:selectItem itemLabel="Seleccionar" itemValue="" /> 
          <f:selectItems value="#{mbMovil.todos}" var="mov" itemValue ="#{mov.idmovil}" itemLabel = "#{mov.descripcion}"/> 
         </p:selectOneMenu> 
         <p:message for="txtMovil"/> 
         <p:outputLabel for="txtChofer" value="Chofer:" /> 
         <p:selectOneMenu id="txtChofer" value="#{mbChofer.chofer.idchofer}" style="width:175px"> 
          <f:selectItem itemLabel="Seleccionar" itemValue="" /> 
          <f:selectItems value="#{mbChofer.todos}" var="chof" itemValue ="#{chof.idchofer}" itemLabel = "#{chof.nombre}"/> 
         </p:selectOneMenu> 
         <p:message for="txtChofer"/> 
         <p:outputLabel for="txtCombustible" value="Combustible:" /> 
         <p:selectOneMenu id="txtCombustible" value="#{mbCombustible.combustible.idcombustible}" style="width:175px"> 
          <f:selectItem itemLabel="Seleccionar" itemValue="" /> 
          <f:selectItems value="#{mbCombustible.todos}" var="comb" itemValue ="#{comb.idcombustible}" itemLabel = "#{comb.descripcion}"/> 
         </p:selectOneMenu> 
         <p:message for="txtCombustible"/> 
         <p:outputLabel for="txtProveedor" value="Proveedor:" /> 
         <p:selectOneMenu id="txtProveedor" value="#{mbProveedor.proveedor.idproveedor}" style="width:175px"> 
          <f:selectItem itemLabel="Seleccionar" itemValue="" /> 
          <f:selectItems value="#{mbProveedor.todos}" var="prov" itemValue ="#{prov.idproveedor}" itemLabel = "#{prov.descripcion}"/> 
         </p:selectOneMenu> 
         <p:message for="txtProveedor"/> 
         <p:outputLabel value="Kilómetros:" for="txtKilometros"/> 
         <p:inputText id="txtKilometros" label="Nombre" value="#{mbVale.vale.kilometros}"> 
          <f:validator validatorId="validadorVacio"/> 
         </p:inputText> 
         <p:message for="txtKilometros"/> 
         <p:outputLabel value="Litros:" for="txtLitros"/> 
         <p:inputText id="txtLitros" label="Nombre" value="#{mbVale.vale.litros}"> 
          <f:validator validatorId="validadorVacio"/> 
         </p:inputText> 
         <p:message for="txtLitros"/> 
         <p:commandButton value="Registrar Vale" actionListener="#{mbVale.registrar()}" update="nuevoVale,:frmListaVales"/> 
        </p:panelGrid> 
       </p:dialog> 
      </h:form> 

      <h:form id="frmEditarVale"> 
       <p:dialog header="Editar Vale" widgetVar="dialogoEditarVale" modal="true" resizable="false" width="900" showEffect="explode" hideEffect="explode" > 
        <p:panelGrid id="editarVale" columns="3"> 
         <p:outputLabel value="Número de Vale:" for="txtIdentificador"/> 
         <p:outputLabel id="txtIdentificador" value="#{mbVale.vale.idvale}"/>  
         <p:message for="txtIdentificador"/> 
         <p:outputLabel value="Fecha de Emisión:" for="txtEmision"/> 
         <p:inputText id="txtEmision" label="legajo" value="#{mbVale.vale.fechaemision}"> 
          <f:validator validatorId="validadorCero"/> 
         </p:inputText> 
         <p:message for="txtEmision"/> 
         <p:outputLabel value="Kilómetros:" for="txtKilometros"/> 
         <p:inputText id="txtKilometros" label="Nombre" value="#{mbVale.vale.kilometros}"> 
          <f:validator validatorId="validadorVacio"/> 
         </p:inputText> 
         <p:message for="txtKilometros"/> 
         <p:commandButton value="Confirmar Edición" actionListener="#{mbVale.modificarVale()}" update=":frmListaVales,editarVale"/> 
        </p:panelGrid> 
       </p:dialog> 
      </h:form> 

      <!-- Formulario para dar de baja choferes --> 
      <h:form id="frmBajaVale"> 

       <p:dialog header="Dar de Baja Vale" widgetVar="dialogoBajaVale" resizable="false" showEffect="explode" hideEffect="explode" modal="true"> 

        <p:panelGrid id="bajaVale" columns="3"> 
         <p:outputLabel value="Número de Vale:" for="txtIdentificador"/> 
         <p:outputLabel id="txtIdentificador" value="#{mbVale.vale.idvale}"/> 
         <p:message for="txtIdentificador"/> 
         <p:outputLabel value="Emisión:" for="txtEmision"/> 
         <p:outputLabel id="txtEmision" value="#{mbVale.vale.fechaemision}"/> 
         <p:message for="txtEmision"/> 
         <p:outputLabel value="Kilómetros:" for="txtKilometros"/> 
         <p:outputLabel id="txtKilometros" value="#{mbVale.vale.kilometros}"/> 
         <p:message for="txtKilometros"/> 
         <h:panelGroup/> 
         <h:outputText value="¿Realmente desea dar de baja a este registro? "/> 
         <h:panelGroup/> 

         <p:commandButton value="Si" icon="ui-icon-borrar" actionListener="#{mbVale.bajaVale()}" update=":frmListaVales,bajaVale"/> 
         <p:commandButton value="No" icon="ui-icon-cancelar" oncomplete="PF('dialogoBajaVale').hide();"/> 
        </p:panelGrid> 

       </p:dialog> 

      </h:form> 

     </ui:define> 

     <ui:define name="bottom"> 
     </ui:define> 

    </ui:composition> 

</body> 

私はそれを使用していますポイントは "frmAltaVales" です。

私は車両(movil)を選択し、そのIDをバウチャークラスに渡したいと思います。

私があなたを助けてくれることを願っています。

+0

@JasperdeVries申し訳ありませんが、私は –

答えて

1

あなたは、コンバータのIDを渡すことになっている、豆などないコンバータは: は使用しないでください:

converter="#{conversorMovil}" 

使用を

converter="conversorMovil" 
+0

翻訳しています確かに、xhtmlのManaged Beanとして挿入したときに私が思っていたことは分かりません。 しかし、私はgetAsStringメソッドでキャストエラーをキャストしました: Java.lang.ClassCastException:java.lang.StringをPojos.Movilesにキャストできません –

関連する問題