我正在市场上购买虚拟物品,我打算让它在行中显示每个项目的详细信息,每个项目旁边都有一个“购买”按钮。这就是我所拥有的:
<s:form method="post">
<s:hidden name="shownType"/>
<table>
<tr>
<td>Name</td>
<td>Image</td>
<td>Type</td>
<td>Price</td>
<td>Buy</td>
</tr>
<s:iterator value="items" var="item">
<tr>
<td><s:property value="name" /></td>
<td><s:property value="image" /></td>
<td><s:property value="type" /></td>
<td align="center"><s:property value="price" /></td>
<td><s:submit value="Buy"
onclick="coinAlert()" action="Buy"
type="button" theme="simple">
</s:submit></td>
</tr>
</s:iterator>
</table>
</s:form>
理论上,我想将特定的Item对象(名称,图像等)传递给Buy操作(具体来说,传递给名为buyingItem的Item)。问题是,我不确定如何引用单击按钮旁边的特定项目。我试过了
<s:hidden name="boughtItem.name" value="%{#item.name}"/>
但是将buyItem的名称设置为List中所有项目的名称,以逗号分隔。使用迭代器一次尝试设置整个的buyItem对象失败了。
对此有任何见解将不胜感激。
答案 0 :(得分:0)
使用简单的按钮并使用javascript
提交表单,而不是使用submit
按钮
<s:form method="post" action="Buy" name="myForm">
<s:hidden name="name" id='name_to_submit'/>
<s:hidden name="image" id='image_to_submit'/>
<s:hidden name="type" id='type_to_submit'/>
<s:hidden name="price" id='price_to_submit'/>
<table>
<tr>
<td>Name</td>
<td>Image</td>
<td>Type</td>
<td>Price</td>
<td>Buy</td>
</tr>
<s:iterator value="items" var="item">
<tr id="<s:property value="name" />">
<td><s:property value="name" /></td>
<td class='image_td'><s:property value="image" /></td>
<td class='type_td'><s:property value="type" /></td>
<td class='price_td' align="center"><s:property value="price" /></td>
<td><input type="button" value="Buy"
onclick="submitForm('<s:property value="name" />')">
</td>
</tr>
</s:iterator>
</table>
</s:form>
<强>的JavaScript 强>
function submitForm(name){
//All this would be very easy if you were using jQuery
var nameElem = document.getElementById(name);
//get values for selected row
var imageVal = nameElem.getElementsByClassName("image_td")[0].innerHTML;
var priceVal = nameElem.getElementsByClassName("price_td")[0].innerHTML;
var typeVal = nameElem.getElementsByClassName("type_td")[0].innerHTML;
//set the values to submit
document.getElementById("name_to_submit").value = name;
document.getElementById("image_to_submit").value = imageVal;
document.getElementById("price_to_submit").value = priceVal;
document.getElementById("type_to_submit").value = typeVal;
document.myForm.submit(); //finally submit the form
}
最好使用一些标识符属性作为id而不是name