繁体   English   中英

在Spring MVC表单中绑定嵌套属性

[英]Binding nested properties in Spring MVC forms

我在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)。

有人可以帮忙吗?

只是更新:原因是为fieldType对象生成的ID相同。

基本上,它们是指相同的对象。 这就是为什么弹簧绑定无法正常工作的原因。

这些ID是否可以唯一?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM