2016-04-28 2 views
0

Я использую Struts 2.1.6. У меня возникает проблема при попытке установить значение атрибута с использованием события onchange в теге <s:iterator>.Struts2 iterator tag onchange issue

<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 к истине. Однако это не сработает.

Как это сделать?

ответ

0

Атрибут onchange в s:textfield тега

Установите HTML OnChange атрибут элемента HTML оказанной

и оказанной HTML элемента <input type="text">. Для этого элемента атрибут onchange определяет функцию javascript для обработки события. Таким образом, вы можете создать функцию doChange(). Но прежде вам нужно добавить атрибут id

атрибут HTML идентификатор

это позволяет найти элемент в документе по 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.

+0

Большое спасибо Роман! Это сработало! – bipin