我真的不知道该如何为我的问题加上标题,但是我有一个JSP页面,其中的一个表显示了数据库中的元素,并且我想为每行都有一个按钮以删除或编辑该特定行。这是我生成表的JSP页面的一部分(表和按钮生成得很好)
<style type="text/css"> table { empty-cells: show; } </style> <table border="1"> <tr> <th>Action</th> <s:iterator value="columnNames" id="name"> <th> <s:property value="name" /> </th> </s:iterator> </tr> <s:iterator value="%{table}" id="row"> <tr> <td> <table><tr><td> <s:form action="edit" namespace="/." theme="simple"> <s:submit value="Edit" name="edit" /> </s:form></td> <td> <s:form action="remove" namespace="/." theme="simple"> <s:submit value="Remove" name="remove" /> </s:form></td></tr> </table></td> <s:iterator value="%{#row}" id="cell"> <td><s:property value="%{#cell}"/></td> </s:iterator> </tr> </s:iterator> </table>
我如何获得它,以便当我单击某一行上的特定按钮时,我的程序将知道应该在哪一行上执行操作(编辑/删除)?抱歉,我对Struts2还是很陌生…
我不确定为什么您只为按钮嵌套了一个表格…也许是为了布局。我建议使您的每个顶层都具有一个表单,其中包含用于标识该行的另一个属性以及两个提交按钮。
例如这样的东西(未经测试)
<s:form theme="simple"> <s:hidden key="rowID" /> <s:submit action="remove" value="Remove"/> <s:submit action="edit" value="Edit"/> </s:form>
您可以使用一个表单,每个表单具有多个操作。只需在该行中放置可以唯一标识要执行操作的行。
因此,将发生的事情是,提交该行时,rowID将包含在请求中,并作为setter(setRowID())的参数发送到您的特定操作。只需从原始数据中唯一识别出的东西中进行挑选即可。