<s:iterator>标签遍历动态数组<泛型>:ArrayList<对象>,怎样批量修改数据并一起提交到后台
2017-11-29 16:41
399 查看
这个<s:iterator>标签属于一个迭代器,用于将集合迭代输出,刚开始我把它应用于实战的时候,发现很多疑惑,这在很多网上的文章中都没有提到过,而且大家都是照搬理论知识往自己博客一帖完事,但是真正的实际问题还是不能得到解决,这个标签在用之前,自己先翻了书籍看了struts标签<s:iterator>这章,将基础的理论知识梳理了一遍,然后摸索着去解决掉!
在用之前可能遇到的问题,我可能开发经验有限,所以对这种标签“从无到一”熟练过程中,有过很多疑惑,希望把这些问题写下来给后者的开发人员提供一点帮助!
以下是我当时的疑惑:
1、这个标签在遍历集合的时候,对象被迭代遍历出来,然后供每个字段输出的input标签其中的name属性只有一个名字,也就是每个对象的相同字段name是一样的,那我修改提交后的name属性数据代表的是第一个对象的还是最后一个对象的?
<s:iterator value="bookList" status="st" id="a">
<input type="text" id="bookList" value="<s:property value="bookList"/>" style="display: none">
<s:set name="zz" value="#a.size()"></s:set>
<tr>
<td rowspan="<s:property value="#zz"/>"><s:property value="#a.name"/></td>
<td rowspan="<s:property value="#zz"/>"><input type="text" name="bookValue" id="bookValue<s:property value="#st.count"/>" value="<s:property value
="#a.bookValue"/>"></td>
<td rowspan="<s:property value="#zz"/>"><input type="text" name="bookPrice" id="bookPrice<s:property value="#st.count"/>" value="<s:property value =
"#a.bookPrice"/>"></td>
<td rowspan="<s:property value="#zz"/>"><input type="text" name="bookTitle" id="bookTitle<s:property value="#st.count"/>" value="<s:property value =
"#a.bookTitle"/>"></td>
<td rowspan="<s:property value="#zz"/>"><input type="text" name="bookMessage" id="bookMessage<s:property value="#st.count"/>" value="<s:property value =
"#a.bookMessage"/>"></td>
<td rowspan="<s:property value="#zz"/>"><input type="text" name="value" id="value<s:property value="#st.count"/>" value="<s:property value = "#a.value"/>"></td>
<td rowspan="<s:property value="#zz"/>" style="display: none"><input type="text" name="bookListId" value="<s:property value = "#a.id"/>"></td>
</tr>
</s:iterator>
从上面代码看的话,我刚开始以为后面的数据会覆盖前面的数据,但是转折点在我测试的时候,仔细看了下报出的错误,里有表示我的bookValue、bookPrice、bookTitle等这些是集合并且后面集合中出现的数据就是我提交的数据,并且提示不能匹配,看到这里我兴奋了,因为问题终于弄明白了,我需要在后台,把每个字段的name属性名以一个集合的形式去getter和setter,如:
private ArrayList bookValue;
private ArrayList bookPrice;
private ArrayList bookTitle;
private ArrayList bookMessage;
private ArrayList value;
之后就是getter和setter。
把数据提交到后台之后就进行数据的修改操作就是了!
在用之前可能遇到的问题,我可能开发经验有限,所以对这种标签“从无到一”熟练过程中,有过很多疑惑,希望把这些问题写下来给后者的开发人员提供一点帮助!
以下是我当时的疑惑:
1、这个标签在遍历集合的时候,对象被迭代遍历出来,然后供每个字段输出的input标签其中的name属性只有一个名字,也就是每个对象的相同字段name是一样的,那我修改提交后的name属性数据代表的是第一个对象的还是最后一个对象的?
<s:iterator value="bookList" status="st" id="a">
<input type="text" id="bookList" value="<s:property value="bookList"/>" style="display: none">
<s:set name="zz" value="#a.size()"></s:set>
<tr>
<td rowspan="<s:property value="#zz"/>"><s:property value="#a.name"/></td>
<td rowspan="<s:property value="#zz"/>"><input type="text" name="bookValue" id="bookValue<s:property value="#st.count"/>" value="<s:property value
="#a.bookValue"/>"></td>
<td rowspan="<s:property value="#zz"/>"><input type="text" name="bookPrice" id="bookPrice<s:property value="#st.count"/>" value="<s:property value =
"#a.bookPrice"/>"></td>
<td rowspan="<s:property value="#zz"/>"><input type="text" name="bookTitle" id="bookTitle<s:property value="#st.count"/>" value="<s:property value =
"#a.bookTitle"/>"></td>
<td rowspan="<s:property value="#zz"/>"><input type="text" name="bookMessage" id="bookMessage<s:property value="#st.count"/>" value="<s:property value =
"#a.bookMessage"/>"></td>
<td rowspan="<s:property value="#zz"/>"><input type="text" name="value" id="value<s:property value="#st.count"/>" value="<s:property value = "#a.value"/>"></td>
<td rowspan="<s:property value="#zz"/>" style="display: none"><input type="text" name="bookListId" value="<s:property value = "#a.id"/>"></td>
</tr>
</s:iterator>
从上面代码看的话,我刚开始以为后面的数据会覆盖前面的数据,但是转折点在我测试的时候,仔细看了下报出的错误,里有表示我的bookValue、bookPrice、bookTitle等这些是集合并且后面集合中出现的数据就是我提交的数据,并且提示不能匹配,看到这里我兴奋了,因为问题终于弄明白了,我需要在后台,把每个字段的name属性名以一个集合的形式去getter和setter,如:
private ArrayList bookValue;
private ArrayList bookPrice;
private ArrayList bookTitle;
private ArrayList bookMessage;
private ArrayList value;
之后就是getter和setter。
把数据提交到后台之后就进行数据的修改操作就是了!
相关文章推荐
- Intent 传递简单类型, 数组, Object对象,与ArrayList<T> 类型数据
- [JSP]EL表达式和JSTL标签遍历取值对象和数组与原来<%%>的对比
- 使用<s:iterator>标签来循环遍历某一实体下的set集合数据
- Struts标签<s:iterator>遍历访问复杂Map对象
- ArrayList<Integer> list = new ArrayList<Integer>();在这个泛型为 Integer 的 ArrayList 中存放一个 String 类型的对象。
- js数租,对象, 数组,字符串,函数,变量,int与String 型转化,String 转化为js 中内部代码,编码格式转化,<a>标签的死链接
- 工作总结 用, 隔开数据 后台不可以用 List<string> 接收 get请求直接通过浏览器发请求传数组或者list到后台
- Struts遍历标签<s:iterator>总结 .
- 记录<a>标签使用中click事件中ajax提交数据后,整体页面也做了刷新操作的坑
- Struts标签-使用<s:iterator>迭代遍历集合中的集合
- <s:iterator>获取遍历数据的索引下标
- <logic:empty/>,<logic:present/>和<logic:iterator/>标签
- ArrayList<实体类> 存入数据和循环遍历打印输出
- truts2中表单可以不用struts自带的<s:form>标签,直接用html的<form>标签能够提交数据到action
- struts2中标签<s:iterator/>与<s:if/>的用法
- 笔记:动态改变数组-泛型类ArrayList<T>
- js中通过<s:iterator>标签给一个数组赋值
- C#中数组[],ArrayList,List<T>泛型的区别
- jsp标签中遍历List<Map<String, List<Object>>>类型的数据
- <s:if test="">标签以动态数据为判断条件