【问题标题】:spring webflow submit array with new itemsspring webflow 提交带有新项目的数组
【发布时间】:2015-09-03 19:35:37
【问题描述】:

我正在尝试使用 spring webflow 提交包含新项目的数组。例如,如果 myList 的大小为 3,然后我添加第 4 个项目,则提交失败。

<c:forEach items="${myList}" var="item" varStatus="status">
  <tr>
    <td>
       <input type="number" readonly class="form-control" value="${item.a}" name="myList[${status.index}].a"/>
    </td>
    <td>
      <input type="number" class="form-control" value="${item.b}" name="myList[${status.index}].b"/>
    </td>
    <td class="text-center">
      <i class="fa fa-trash delete" data-link="${flowExecutionUrl}&_eventId=deleteItem&itemId=${item.id}"></i>
    </td>
  </tr>
</c:forEach> 

<tr>
  <td>
    <input type="number" readonly class="form-control" value="1234" name="myList[3].a"/>
  </td>
  <td>
    <input type="number" class="form-control" value="5678" name="myList[3].b"/>
  </td>
  <td class="text-center">
    <i class="fa fa-trash delete"></i>
  </td>
</tr>

那么如何提交这样的表格呢?

【问题讨论】:

    标签: java spring spring-webflow spring-webflow-2


    【解决方案1】:

    因为您为数据绑定器提供的 ArrayList 具有预定义的固定大小并且不能接受新条目。

    在尝试将任何新条目添加到流中的数据绑定器之前,您需要使用 AutoPopulatingList(位于 spring-core.jar 中)包装您的 ArrayList ......(或简单地在 pojo 上使用 AutoPopulatingList 以避免包装方法)。

    示例转换方法:

    import org.springframework.util.AutoPopulatingList;
    

    //类定义跳过

            public <T> List<T> wrapListWithAutoPopulatingList(List<T> list, Class<?> pojoClazz)  {
    
                List<T> apl = new AutoPopulatingList(list, pojoClazz ) ;
                return apl;
            }
    

    Java 文档:

    允许元素自动生成的简单列表包装类 按要求填充。这对数据特别有用 绑定到列表,允许创建元素并将其添加到 以“及时”的方式列出。

    注意:这个类不是线程安全的。要创建线程安全版本, 使用 java.util.Collections.synchronizedList 实用程序方法。

    灵感来自 Commons Collections 中的 LazyList。

    另外,请注意 initBinder 上的“autoGrowCollectionLimit”属性。默认最大值为 256 个条目。如果您需要更多(或更少),可以对此进行调整。见

    Can not post form with many (over 256) values

    【讨论】:

    • 我们必须在哪里添加这个 wrapListWithAutoPopulatingList 方法?
    猜你喜欢
    • 2012-09-06
    • 2014-06-17
    • 2019-01-03
    • 1970-01-01
    • 1970-01-01
    • 2012-09-25
    • 2018-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多