Drop-down menu "Conversion error setting value" for "zero converter"

So, I'm using a seam to try and create a drop-down menu to add delivery to the database. I use the drop-down menu to select which employee from the database is delivering. The menu loads all the employees in the database just fine, but when I select one and click add, I get the error "Conversion error value" (hash for the employee) for "zero converter".

here is the code for the dropdown menu:

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

Any help would be greatly appreciated. Thanks you

+5
source share
2 answers

You have to do 2 things to avoid this error:

  • , emp equals() hashCode()
  • , , bean

BalusC , .

+7

equals() hashCode() Employee ( emp) @flash.

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:

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

}

( emp, employeeId - 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 + "]";
}

. .

0

All Articles