2012-06-01 16 views
5

Veritabanına teslimat eklemek için açılır menüyü yapmaya çalışmak için dikiş kullanıyorum. Veritabanından hangi çalışanın teslimatı yaptığını seçmek için açılır menüyü kullanıyorum. Menüde veritabanındaki tüm çalışanlar çok iyi bir şekilde yüklenir, ancak bir tane seçip eklediğimde, "null Dönüştürücü" için "Dönüştürme Hatası ayar değeri" (çalışan için karma) hatası alırız.açılır menü "NULL Converter" için "Dönüştürme Hatası ayar değeri" "

açılır menü:. Herhangi bir yardım büyük takdir

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

teşekkür ederiz

cevap

7
bu hatayı önlemek için 2 şey yapması gerektiğini

:

  1. sınıf emin olun emp yedekleme fasulye

BalusC geçirmeden önce seçtiğiniz değeri dönüştürmek için bir dönüştürücü kullanın equals() ve hashCode()

  • uygulayan dönüştürücüler ve nasıl kullanılacakları hakkında güzel tutorial yazdı edilir.

  • +0

    Yardımlarınız için çok teşekkür ederim. Bu da harika bir yazı. – user1423793

    0

    Dönüştürücüyü ve eşitlik() & hashCode() öğesini Employee sınıfında (emp sınıfı) @ flash yanıtına uygulamıyorum. XHTML

    Bölüm:

    <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 sınıfı: I vardı

    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 + "]"; 
    } 
    

    : Çalışan Sınıf

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

    Parça (sözde emp sınıfından employeeId String) benzer bir problem. Benim için çalıştı.