如何在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标签.

<spring:bind path="subdivisondto.subDevisions[0].subDivisonName">
    <span class="formw">
        <input name="subDivisonName" type="text" style="width:350px;" />
    </span>
</spring:bind>

仅仅为了测试目的,我把它作为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代码应如下所示.

<c:forEach items="${subs.subDevisions}" var="obj" varStatus="gridRow"> 

绑定输入元素文本框

<spring:bind path="subdivisondto.subDevisions[${gridRow.index}].subDivisonName">
      <span class="formw"><input name="<c:out value="${status.expression}"/>" type="text"  style="width:350px;" />

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

<spring:bind path="subs.subDevisions[${gridRow.index}].users">
              <c:forEach items="${obj.users}" var="dependenttwo" varStatus="dependentRowtwo">
                <li>
                  <input name="<c:out value="${status.expression}"/>" type="checkbox" class="users" value="<c:out value="${dependenttwo}"/>"/>
                  <c:out value="${dependenttwo}"/>
                </li>
                </c:forEach>
                </spring:bind>

`subs` is a map key name. the value for this key `subs` is a list of my DTO objects which named as `SubDevisonDto `

这段代码对我来说很好.

感谢给予的支持.

转载注明原文:如何在Spring MVC中绑定命令对象的列表集合中的对象 - 代码日志