下拉菜单“转换错误设置值”为'null转换器'“

问题描述:

因此,我正在使用seam来尝试创建一个下拉菜单以将传递添加到数据库。我正在使用下拉菜单来选择数据库中的哪位员工正在进行交付。菜单加载数据库中的所有员工就好了,但是当我选择一个并点击添加时,我会为'null Converter'收到错误“转换错误设置值'(散列员工)''下拉菜单“转换错误设置值”为'null转换器'“

这里是代码下拉菜单:

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

任何帮助将不胜感激谢谢

你应该做两件事情,以避免这个错误:

  1. 确保你的类emp正在实施equals()hashCode()
  2. 使用一个转换器将它传递给后台bean

BalusC之前,您选择的值转换写了一个漂亮的tutorial有关转换器,以及如何使用它们。

+0

非常感谢您的帮助。这也是一篇很棒的文章。 – user1423793

根据@flash的回答,我在Employee类(emp类)中实现了转换器并等于()& hashCode()。 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(); 
    } 

} 

Employee类的部分(类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 + "]"; 
} 

我类似的问题。它为我工作。