【发布时间】:2018-01-16 07:26:43
【问题描述】:
我在 Spring mvc 4 中绑定嵌套对象属性时遇到问题。 这是场景:
Form.java:
@Entity
@Table (name = "form")
public class Form implements java.io.Serializable{
@SuppressWarnings("unchecked")
private List<Field> fieldsList = LazyList.decorate(new ArrayList<Field>(),
FactoryUtils.instantiateFactory(Field.class));
Field.java
@Entity
@Table(name="field")
public class Field implements java.io.Serializable {
private FieldType fieldType;
FieldType.java
@Entity
@Table(name="field_type")
public class FieldType implements java.io.Serializable {
private Integer id;
private String name;
private List<Field> fields;
我正在发送一个包含 Field 对象列表的 Form 对象:
@RequestMapping(method = RequestMethod.GET)
public ModelAndView editForm(HttpServletRequest request){
ModelAndView model = new ModelAndView("denf_dynamic_form");
Form f = formBackingObject(request);
model.addObject("command", f);
model.addObject("origFormName",f.getFormName());
return model;
}
在 JSP 中,我尝试像这样绑定 form.fieldsList.fieldType.name 属性:
<c:forEach items="${command.fieldsList}" var="fi" varStatus="i">
<spring:bind path="command.fieldsList[${i.index}].fieldType.name">
<input style="display:none;" id='fTypeName' name='${status.expression}'
value="${status.value }"/>
</spring:bind>
如果字段列表很小,则绑定可以正常工作。随着字段数变大(大约 100 个),行为变得异常;与 Form 类直接相关的属性被正确绑定。但是不能绑定 FieldType 类的嵌套属性(如 fieldType.name)。
有人可以帮忙吗?
【问题讨论】:
标签: java spring spring-mvc data-binding