我正在使用来自我的动作和迭代器方法的数据在我的jsp中创建一个表。每个表行包含一个发布(提交)按钮。我希望在单击每个发布按钮时执行不同的操作。我还想使用该特定行中包含的数据。我该如何做到这一点?
答案 0 :(得分:0)
正如你没有提到你在决定行动的条件,我假设你是根据特定表格行中的某些值来做的。你有两个选择
<input type="button" value="publish" onclick="someFunc()">
并在someFunc中决定调用哪个操作,并根据该操作更改表单的操作属性。对于基于单击的按钮提交不同的值,您必须在行中具有某些属性,这些属性对于每一行都是唯一的。假设该属性为myUniqueVal
<s:form name="myform" method="post" action="myaction">
<s:hidden name="whatever_1"/>
<s:hidden name="whatever_2"/>
..
</s:form>
<table>
...
<s:iterator value="yourList">
<tr>
<td><s:property value="whatever_1"/></td>
<td><s:property value="whatever_2"/></td>
.....
<s:hidden name="whatever_1" id="%{myUniqueVal}1stValueToSubmit" value="%{whatever_1}"/>
<s:hidden name="whatever_2" id="%{myUniqueVal}2ndValueToSubmit" value="%{whatever_2}"/>
.....
<input type="button" value="publish" onclick="submitform('<s:property value="myUniqueVal"/>')">
</tr>
</s:iterator>
</table>
<强>的JavaScript 强>
function submitform(uniqueval){
var myform=document.forms[0];
myform.whatever_1.value=document.getElementById(uniqueval+"1stValueToSubmit").value;
myform.whatever_2.value=document.getElementById(uniqueval+"2ndValueToSubmit").value;
//if you are going to use the first soltuion you can choose your action here ased on the above values
//myform.action="";
document.forms[0].submit();
}
答案 1 :(得分:0)
您还没有提到,如果要显示的每一行,是否会有唯一的标识符? 让我们假设您的唯一标识符字段是来自Action
的 - firstName和lastName所以你可以按如下方式遍历你的列表:
<s:iterator value="listFromAction">
<tr>
<s:set var="id1" value="%{firstName}" scope="request" />
<s:set var="id2" value="%{lastName}" scope="request" />
<td>
<input type="button" name="Click" value="Click"
onClick="callAction('<%=request.getAttribute("id1")%>',
'<%=request.getAttribute("id2") %>')"/>
</td>
</tr>
</s:iterator>
在迭代中,我们还添加了调用javascript函数的按钮。
现在在这个javascript函数中,你可以调用适当的动作类,具体取决于所选行的值。
<script language="javaScript">
function callAction(id1,id2)
{
document.form.firstName.value=id1;
document.form.lastName.value=id2;
if(id1 == 'Troy' && id2=='Roy')
{ document.form.action="submit.do";}
document.form.submit();
}
将jsp中的变量firstName和lastName定义为隐藏变量:
<s:hidden name="firstName" />
<s:hidden name="lastName" />