tib*_*ibo 5 spring jsp spring-mvc
我正在尝试使用spring的select标签来选择多个选项来填充List.我的选择标签显示良好,当我选择选项时,列表已正确更新.
我唯一的问题是,当我使用已填充的List渲染for时,我的select标记不会突出显示所选的选项.我已经尝试调试,并且我可以看到列表不为空,它实际上是标签似乎没有将所选选项标记为已选中.
我的代码:
@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>
Run Code Online (Sandbox Code Playgroud)
这可能是由于所选产品列表不包含与显示产品的完整列表相同的实例.
标签会比较产品equals(),并且您没有在Product类中覆盖equals()(和hashCode()).
因此,即使所选产品包含名为"foo"的产品,并且产品的完整列表也包含名为"foo"的产品,这些产品也不相同,因此Spring不知道它们是相同的产品,因此应该选择该产品.