<Form action="updateAllDataInfo" method="POST">
..........
..........
<s:iterator value="indexList" status="s" >
<tr>
<td align="left"> <s:property value="indexCode"/></td>
<td><s:property value="indexName"/></td>
<td><s:property value='%{dataList[#s.index].indexValue}'/></td>
<td><input type="text" value='${dataList[1].indexValue}'/></td>
<td><input type="text" value='%{dataList[#s.index].indexValue}'/></td>
</tr>
</s:iterator>
<s:submit value="保存" align="center" />
显示如下图

本s:iterator同时对两个长度相等List进行读取和循环。读第二个datalist的时我利用类似数组取值的方式如代码所示。
第三行我用s:property取值成功(如图第三列4个数),第四行我每次都读取下标为1的值,都能取值成功(第四列4个相等的数),唯独第五行我用类似第三行的方法,把s.index作为索引变量放到数组里,只不过用的是input的标签,读取失败,也试了几种其他的写法均失败。
请问如何对第五行修改才能读取数据库值成功?涉及到修改功能,只能用input的标签先读取数值了。
------解决思路----------------------
我看你的获取方式不一样,一个是%一个是$,两个获取方式对于string和int的处理是不一样的(和框架有关)
可能你的#s.index取出的值是一个Integer对象,需要转换成int类型,才能当作list的索引
你可以#s.index+1试试
------解决思路----------------------
用s:set定义一个数,随着循环自增
------解决思路----------------------
那就定义一个变量,把#s.index赋给它,下面在用这个变量