2012-06-01 25 views
5

Vì vậy, tôi đang sử dụng đường may để cố gắng tạo menu thả xuống để thêm phân phối vào cơ sở dữ liệu. Tôi đang sử dụng một trình đơn thả xuống để chọn nhân viên nào từ cơ sở dữ liệu đang thực hiện việc phân phối. Trình đơn tải tất cả các nhân viên trong cơ sở dữ liệu tốt nhưng khi tôi chọn một và bấm vào thêm, tôi nhận được lỗi "Giá trị cài đặt lỗi chuyển đổi" (băm cho nhân viên) 'cho' chuyển đổi null '. thả xuống menu:.trình đơn thả xuống "Giá trị cài đặt lỗi chuyển đổi '' cho 'null Converter'"

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

Bất kỳ trợ giúp sẽ được đánh giá rất nhiều Cảm ơn bạn

Trả lời

7

bạn nên làm 2 việc để tránh lỗi này:

  1. Hãy chắc chắn rằng lớp học của bạn emp đang triển khai equals()hashCode()
  2. Sử dụng một bộ chuyển đổi để chuyển đổi giá trị được lựa chọn của bạn trước khi đi qua nó vào đậu ủng hộ

BalusC đã viết một đẹp tutorial về chuyển đổi và làm thế nào để sử dụng chúng.

+0

cảm ơn bạn rất nhiều vì sự giúp đỡ của bạn. Đó cũng là một bài viết tuyệt vời. – user1423793

0

Tôi đã triển khai trình chuyển đổi và bằng() & hashCode() trong lớp Employee (lớp của emp) theo câu trả lời của @flash.

Một phần của 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 Class:

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

} 

Một phần của nhân viên Lớp (class của emp, được cho là employeeId là 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 + "]"; 
} 

tôi đã một vấn đề tương tự. Nó làm việc cho tôi.

Các vấn đề liên quan