Struts2迭代器标签onchange问​​题

时间:2016-04-28 15:28:26

标签: javascript html jsp struts2 struts-tags

我正在使用Struts 2.1.6。我在尝试使用onchange标记内的<s:iterator>事件设置属性值时出现问题。

<s:iterator value="myList" status="rowStatus">      
 <tr>
    <td><s:textfield name="myList[%{#rowStatus.index}].abc" value="%{model[#rowStatus.index].abc}"  onchange="myList[%{#rowStatus.index}].changeFlag = "true"/></td>
    <td><s:textfield name="myList[%{#rowStatus.index}].changeFlag" value="%{model[#rowStatus.index].changeFlag}" /></td>
 </tr>
</s:iterator>

列表myList有多个对象,如果任何特定行的abc属性值发生变化,那么我试图将changeFlag的值设置为true 。但它不起作用。

怎么做?

1 个答案:

答案 0 :(得分:0)

s:textfield代码中的onchange属性为

  

在渲染的html元素

上设置html onchange属性

,呈现的html元素为<input type="text">。对于此元素,onchange属性定义了一个用于处理事件的javascript函数。所以你可以创建一个函数doChange()。但在您需要添加id属性

之前
  

HTML id属性

这允许通过id在文档中定位元素。

<s:iterator value="myList" status="rowStatus">      
 <tr>
    <td><s:textfield id="myList[%{#rowStatus.index}].abc" name="myList[%{#rowStatus.index}].abc" value="%{model[#rowStatus.index].abc}"  onchange="doChange('myList[%{#rowStatus.index}].changeFlag')"/></td>
    <td><s:textfield id="myList[%{#rowStatus.index}].changeFlag" name="myList[%{#rowStatus.index}].changeFlag" value="%{model[#rowStatus.index].changeFlag}" /></td>
</tr>
</s:iterator>
<script>
function doChange(dest) {
 document.getElementById(dest).value = 'true';
} 
</script>  

P.S。:你使用的Struts版本太旧了(2.1.6)。你应该知道如何获得更新的版本。请参阅How to know a version of Struts 2