2012-06-01 2 views
5

So verwende ich Naht zu versuchen, ein Dropdown-Menü, um eine Lieferung zu einer Datenbank hinzuzufügen. Ich verwende ein Dropdown-Menü, um auszuwählen, welcher Mitarbeiter aus der Datenbank die Lieferung ausführt. Das Menü lädt alle Angestellten in der Datenbank gut, aber wenn ich eins auswähle und auf Add klicke, bekomme ich den Fehler "Conversion Error setting value" für "null Converter".Dropdown-Menü "Conversion Error Einstellung Wert '' für 'Null Converter'"

hier ist der Code für das Drop-Down-Menü.

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

Jede Hilfe sehr geschätzt würde Danke

Antwort

7

sollten Sie 2 Dinge tun, um diesen Fehler zu vermeiden:

  1. Stellen Sie sicher, Ihre Klasse emp setzt equals() und hashCode()
  2. einen Konverter Verwenden Sie Ihre ausgewählten Wert zu konvertieren, bevor es in die Backing Bean

BalusC vorbei einen schönen tutorial über Wandler geschrieben und wie sie verwendet werden.

+0

Vielen Dank für Ihre Hilfe. Das ist ein wunderbarer Artikel. – user1423793

0

Ich implementierte den Konverter und equals() & hashCode() in der Employee-Klasse (Klasse von emp) nach der Antwort von @flash.

Teil von 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 Klasse:

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(); 
    } 

} 

Ein Teil der Mitarbeiter-Klasse (die Klasse der emp, angeblich employeeId ist 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 + "]"; 
} 

Ich hatte ein ähnliches Problem. Es hat für mich funktioniert.

Verwandte Themen