我正在使用 struts 迭代器标签迭代一个列表,如下所示。
<s:iterator var="listItem" value="userMasterActivityDTOList" status="userStatus">
<tr>
<td width="10%"><s:textfield name="regIns" value="%{#listItem.regIn}" /></td>
<td width="10%"><s:textfield name="regOuts" value="%{#listItem.regOut}" /></td>
<td width="10%"><s:textfield name="regDiffs" value=""/></td>
</tr>
</s:iterator>
迭代后,我希望在javascript中为每一行计算regDiff的regIns和regOuts文本字段的值,问题是我无法为每行中的这些文本字段设置唯一的id,以便我可以在javascript中识别它们。
如何为每个行元素设置唯一的 Id?
您可以使用迭代器状态的 index
或 count
属性:
对于您的代码:
<s:iterator var="listItem" value="userMasterActivityDTOList" status="userStatus">
<tr>
<td width="10%"><s:textfield name="regIns" id="in%{#userStatus.count}" value="%{#listItem.regIn}" /></td>
<td width="10%"><s:textfield name="regOuts" id="out%{#userStatus.count}" value="%{#listItem.regOut}" /></td>
<td width="10%"><s:textfield name="regDiffs" id="diff%{#userStatus.count}" value="" /></td>
</tr>
</s:iterator>
我希望我在形式上是正确的,我已经有一段时间没有做 JSP 了。
使用迭代器的状态 COUNT 或 INDEX 方法。
计数从 1 开始,索引从 0 开始。
请参考: http://struts.apache.org/2.3.4/struts2-core/apidocs/org/apache/struts2/views/jsp/IteratorStatus.html#getCount%28%29
<s:iterator var="listItem" value="userMasterActivityDTOList"
status="userStatus">
<tr>
<td width="10%">
<s:textfield name="regIns"
id="in_%{#userStatus.index}" value="%{#listItem.regIn}" />
</td>
<td width="10%">
<s:textfield name="regOuts"
id="out_%{#userStatus.index}" value="%{#listItem.regOut}" />
</td>
<td width="10%">
<s:textfield name="regDiffs"
id="diff_%{#userStatus.index}" value="" />
</td>
</tr>
</s:iterator>