如何在Spring MVC中绑定命令对象的列表集合中的对象

我的命令对象有一个对象列表。 我想将文本字段绑定到该列表中对象的属性。 在Spring MVC中可以做到吗?

命令对象类

public class SubDevisonDto { private String devId; private List subDevisions; 

列表中提到的Subdevision对象类

 public class SubDivison implements Serializable{ private String subDivisonName; private String createdBy; private String createdDate; private String developerID; private List users; 

我想要文本框来设置subDivisonName字段的值。

我已经编写了这样的Spring MVC标签。

      

仅仅为了测试目的,我把它作为0.如果它正在工作,我可以把它变成一个变量。 我的要求是,我应该让用户动态添加subdevision对象。 因此,最初在加载页面时,我只会显示一个文本框。 如果他想添加更多,我会给他一个按钮添加。 单击添加按钮时,我将动态生成文本框。 之后我必须提交带有列表的表格。

这个jsp代码给了我一个错误。 它说org.springframework.beans.NullValueInNestedPathException:

无论如何我在jsp代码中这样做? 如果您对此有任何疑问,请帮助我。 提前致谢。

我找到了问题的答案。 但是,这不是我的要求的解决方案,因为我需要实现动态列表。 但我找到了这个问题的解决方案。

据我所知,我们第一次必须从后端发送数据绑定输入元素。 我没有找到一种方法来绑定表单元素,这些元素接收输入而不从beck端发送列表数据。 但是当我们发送数据并绑定元素时,我们可以从这些元素中获取输入。 所以,我认为在这种情况下绑定元素我们需要第一次发送数据。 如果这个陈述是错误的,请纠正我。 因为,这对我来说是一个更好的解决方案。

我们需要使用惰性列表,并对jsp代码进行位修改。

您的命令类对象应该如下所述创建。

 import org.apache.commons.collections.list.LazyList; import org.apache.commons.collections.FactoryUtils; public class SubDevisonDto { private String devId; private List subDevisions = LazyList.decorate( new ArrayList(), FactoryUtils.instantiateFactory(SubDivison.class)); 

JSP代码应如下所示。

  

绑定输入元素文本框

  " type="text" style="width:350px;" /> 

绑定输入元素复选框。 此输入元素生成一个列表。

   
  • " type="checkbox" class="users" value=""/>
  • `subs` is a map key name. the value for this key `subs` is a list of my DTO objects which named as `SubDevisonDto `

    这段代码对我来说很好。

    感谢给予的支持。

    在dto:

     private List SubDivisions = new AutoPopulatingList(new SubDivisionFactory()); 

    和工厂将是这样的:

     public class SubDivisionFactory implements AutoPopulatingList.ElementFactory { public String createElement(int index) { SubDivision subDivision = new SubDivision(); return subDivision; } } 

    从spring使用AutopopulatingList 。 而你的jsp看起来会一样,你可以根据需要迭代。