春天选择多个标签,并结合(Spring select multiple tag and bindin

2019-09-17 13:24发布

我试图用弹簧的选择标记选择多个选项来填充列表。 我选择的标签很好地显示,当我选择的选项列表中正确更新。

我唯一的问题是,当我渲染为与已填补表,我选择标签并不突出所选的选项。 我已经尝试调试和伊灿看到该列表不是空的,这是真的,这似乎为选择不标记选择的选项标签。

我的代码:

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

Answer 1:

这可能是由于这样的事实,选择产品的列表中不包含相同的情况下所显示产品的完整列表。

标签比较产品与equals() ,而你还没有覆盖equals() (和hashCode() )在你的产品类别。

所以,即使所选产品包含名为“foo”的产品,而产品的完整列表,也包含了产品名称为“foo”的,这些产品是不相等的,而Spring因此不知道他们是相同的产品,且该产品,因此应选择。



文章来源: Spring select multiple tag and binding