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

命令对象类

public class SubDevisonDto {

private String devId;
private List subDevisions;

列表中提到的分割对象类
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。如果它正常工作,我可以将其设置为变量。我的要求是,我应该让用户动态添加分割对象。所以,最初当页面加载时,我只会显示一个文本框。如果他想添加更多,我会给他一个添加按钮。当他点击添加按钮时,我会动态生成文本框。之后,我必须提交带有列表的表单。

这个jsp代码给了我一个错误。它说:



无论如何我可以在jsp代码中做到这一点吗?

最佳答案

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

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

我们需要使用惰性列表,并且对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">

绑定(bind)输入元素文本框
<spring:bind path="subdivisondto.subDevisions[${gridRow.index}].subDivisonName">
      <span class="formw"><input name="<c:out value="${status.expression}"/>" type="text"  style="width:350px;" />

绑定(bind)输入元素复选框。这个输入元素生成一个列表。
<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 `

这段代码对我来说很好用。

感谢给予的支持。

10-07 18:54
查看更多