gpt4 book ai didi

java - 在 Spring MVC 表单中绑定(bind)嵌套属性

转载 作者:太空宇宙 更新时间:2023-11-04 10:47:04 24 4
gpt4 key购买 nike

我在 Spring mvc 4 中绑定(bind)嵌套对象属性时遇到问题。这是场景:

表单.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 中,我尝试像这样绑定(bind) 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>

如果字段列表很小,则绑定(bind)可以正常工作。随着字段数量变大(大约 100 个),行为会变得异常;与 Form 类直接相关的属性已正确绑定(bind)。但是 FieldType 类的嵌套属性(如 fieldType.name)无法绑定(bind)。

有人可以帮忙吗?

最佳答案

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

Basically they are referencing to same object. That is why spring bind is not working.

有什么办法可以让这些 id 是唯一的吗?

关于java - 在 Spring MVC 表单中绑定(bind)嵌套属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48275992/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com