2012-05-28 13 views
5

मैं सूची भरने के लिए कई विकल्पों का चयन करने के लिए वसंत के चयन टैग का उपयोग करने का प्रयास कर रहा हूं। मेरे चयन टैग अच्छी तरह से प्रदर्शित होते हैं और जब मैं विकल्प चुनता हूं तो सूची सही ढंग से अपडेट की जाती है।वसंत कई टैग का चयन करें और बाध्यकारी

मेरे पास एकमात्र समस्या है जब मैं पहले से भरे हुए सूची के साथ प्रस्तुत करता हूं, तो मेरा चयन टैग चयनित विकल्पों को हाइलाइट नहीं करता है। मैंने डीबग करने का प्रयास किया है और मैं देख सकता हूं कि सूची खाली नहीं है, यह वास्तव में वह टैग है जो चयनित विकल्पों को चयनित के रूप में चिह्नित नहीं करता है।

मेरे कोड:

@Entity 
public class ProductsGroup 
{ 
    @Version @Column(name = "version") 
    private Integer version; 
    @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "id") 
    private Integer id; 

    @ManyToMany(fetch = FetchType.EAGER) 
    private List<Product> products; 

    public List<Product> getProducts() 
    { 
     return products; 
    } 

    public void setProducts(List<Product> products) 
    { 
     this.products = products; 
    } 
} 

@Entity 
public class Product 
{ 
    @Version @Column(name = "version") 
    private Integer version; 

    @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "id") 
    private Long id; 

    private String name; 

    public String getName() 
    { 
     return name; 
    } 

    public void setName(String name) 
    { 
     this.name = name; 
    } 
} 

<form:form action="${action}" class="fancyform" commandName="productsGroup" id="productForm"> 
    .... 
    <form:select path="products" items="${products}" itemLabel="name" itemValue="id" multiple="true"/> 
    .... 
</form:form> 

उत्तर

8

यह तथ्य यह है कि चयनित उत्पादों की सूची प्रदर्शित उत्पादों की पूरी सूची के रूप में ही उदाहरणों शामिल नहीं है की वजह से शायद है।

टैग equals() के साथ उत्पादों की तुलना करता है, और आपने अपने उत्पाद वर्ग में equals() (और hashCode()) को ओवरराइड नहीं किया है।

इसलिए यदि चयनित उत्पादों में "foo" नाम वाला उत्पाद शामिल है, और उत्पाद की पूरी सूची में "foo" नाम वाला एक उत्पाद भी शामिल है, तो वे उत्पाद समान नहीं हैं, और वसंत इस प्रकार नहीं जानता वे एक ही उत्पाद हैं, और इस उत्पाद को इस प्रकार चुना जाना चाहिए।

+0

बहुत बढ़िया! मैं सोच रहा था कि यह तुलना करने के लिए आइटम वैल्यू का उपयोग कर रहा था! दरअसल, बराबर का उपयोग करने से अधिक समझ आता है ... – tibo

संबंधित मुद्दे