Spring表单选项不选择项目,选项可以

时间:2016-10-13 10:56:45

标签: spring

${products}包含List<Product>Product@Entity,其equals方法与id进行比较。没有为Product注册转换器或格式化程序(除了Spring Data&#39; DomainClassConverter,但似乎没有为此案例启动):

这有效:

<form:select path="productFrom">
     <form:option value="" label="-" />
     <form:options items="${products}" itemValue="id" itemLabel="name"/>
</form:select>

这(选择组需要,但在此处简化)不会选择正确的值:

<form:select path="productFrom">
     <form:option value="" label="-" />
     <c:forEach items="${products}" var="product">
         <form:option value="${product.id}">${product.name}</form:option>
     </c:forEach>
</form:select>

调试SelectedValueComparator后,我发现它尝试将candidateValue类型LongboundValue String进行比较。我可以通过在产品中创建toString()方法来解决此问题,该方法将id作为String返回。 (或者我可以修改equals()方法来处理Long。)

尽管如此,我还是觉得我在这里做错了。

1 个答案:

答案 0 :(得分:0)

最后,我通过向Product添加新方法解决了这个问题:

public String getIdString() {
    return id == null ? "" : id.toString();
}

并更改选项定义:

<form:option value="${product.idString}">${product.name}</form:option>

仍然不确定我是以正确的方式做到这一点,任何提示都表示赞赏。