java drop-down-menu seam

java - menú desplegable "Valor de configuración de error de conversión '''' para ''Convertidor nulo''"



drop-down-menu seam (2)

Debes hacer 2 cosas para evitar este error:

  1. Asegúrate de que tu clase emp esté implementando equals() y hashCode()
  2. Use un convertidor para convertir el valor seleccionado antes de pasarlo al bean de respaldo

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

Esta pregunta ya tiene una respuesta aquí:

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 ''.

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


Implementé el convertidor y equals () y hashCode () en la clase Employee (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>

Clase EmployeeConverter:

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 is 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í