2012-06-01 18 views
5

Así que estoy usando costura para tratar de crear un menú desplegable para agregar una entrega a una base de datos. Estoy usando un menú desplegable para seleccionar qué empleado de la base de datos está haciendo la entrega. El menú carga a todos los empleados en la base de datos, pero cuando selecciono uno y hago clic en Agregar, aparece el error "Valor de configuración de error de conversión" (hash para empleado) "para" Convertidor nulo "menú desplegable "Valor de configuración de error de conversión '' para 'Convertidor nulo'"

aquí está el código para el menú desplegable:.

<my:dropdown label="Employee ID" id="emp" value="#{deliveryPort.emp}" required="false"> 
        <f:selectItem itemValue="#{null}" itemLabel="Selct One"/> 
        <s:selectItems value="#{deliveryPort.empList}" var="emp" label="# {emp.employeeId} #{ emp.nameFirst}"/> 
       </my:dropdown> 

Cualquier ayuda sería muy apreciada Gracias

Respuesta

7

usted debe hacer 2 cosas para evitar este error:

  1. Asegúrese de que su clase emp está implementando equals() y hashCode()
  2. utilizar un convertidor para convertir el valor seleccionado antes de pasarlo al bean de respaldo

BalusC escribió un buen tutorial sobre convertidores y cómo utilizarlos.

+0

muchas gracias por su ayuda. Ese es un artículo maravilloso también. – user1423793

0

Implementé el convertidor y es igual a() & hashCode() en la clase Empleado (clase de emp) de acuerdo con la respuesta de @flash.

Parte de XHTML:

<my:dropdown label="Employee ID" id="emp" value="#{deliveryPort.emp}" required="false"> 
    <f:selectItem itemValue="#{null}" itemLabel="Selct One"/> 
    <s:selectItems value="#{deliveryPort.empList}" var="emp" label="# {emp.employeeId} #{ emp.nameFirst}"/> 
    <f:converter converterId="empConverter" /> 
</my:dropdown> 

EmployeeConverter Clase:

package mypackage.converters; 

import javax.faces.component.UIComponent; 
import javax.faces.context.FacesContext; 
import javax.faces.convert.Converter; 
import javax.faces.convert.FacesConverter; 

@FacesConverter("empConverter") 
public class EmployeeConverter implements Converter 
{ 

    public Object getAsObject(FacesContext context, UIComponent component, String value) 
    { 
     return value; 
    } 

    public String getAsString(FacesContext context, UIComponent component, Object value) 
    { 
     return value.toString(); 
    } 

} 

parte de la clase de empleado (la clase de emp, supuestamente EMPLOYEEID es String):

public boolean equals(Object other) 
{ 
    return other instanceof Employee && (employeeId != null) ? employeeId.equals(((Employee) other).employeeId) : (other == this); 
} 

public int hashCode() 
{ 
    return employeeId != null ? this.getClass().hashCode() + employeeId.hashCode() : super.hashCode(); 
} 

public String toString() 
{ 
    return "Employee[" + employeeId + "," + nameFirst + "]"; 
} 

tuve un problema similar Funcionó para mí

Cuestiones relacionadas