我有以下 jsp,其中我可以选择添加和删除表的行,并且在表的每一行中,我必须填写选项并提交表单。
在操作类中,如何检索我在 JSP 中填充的行的值,因为我在表中填充了不止一行?
这是我的 JSP:
<table id="fragmentTable" style="height: 100%; width: 100%">
<tr class="tableRow" style='height: 5%;'>
<td class='' style='position: absolute; left: 75%;'>
<button value="Add Row" type="button" onclick="return addRow1();">Add Row</button>
<button value="Delete Row" type="button" onclick="return deleteRow ('dataTable')">Delete Row</button>
</td>
</tr>
<tr>
<td colspan="2"><br><br>
<table id="dataTable" border="1" width=100% height=30% class='blueBorder'>
<thead>
<tr class='rowHeader'>
<th width='14%'>Select</th>
<th width='14%'>Opening Brace</th>
<th width='14%'>Parameter</th>
<th width='14%'>Relational Operator</th>
<th width='14%'>Value</th>
<th width='15%'>Closing Brace</th>
<th width='15%'>Logical Operator</th>
</tr>
</thead>
<tbody>
<tr class='rowData' id=1>
<td>
<s:checkbox theme="simple" id="sel" name="GRF_FRAGID" value="false" /></td>
<td ><s:select headerKey="-1" headerValue="Select" list="#{'1':'(', '2':'((','3':'(((','4':'((((','5':'((((('}" name="GRF_OPNGBRCES" /></td>
<td>
<s:select label="Mode" headerKey="-1" headerValue="Select" list="#{'1':'=', '2':'!='}"
name="GRF_OP" />
</td>
<td>
<s:textfield name="Country"/>
</td>
</tr>
</tbody>
</table>
最佳答案
我不完全理解您的页面,但您需要使用迭代器(如@NidhishKrishnan 所建议的那样)并通过其 IteratorStatus 对象指向索引:
<s:iterator value="yourlist" status="ctr" >
<tr>
<td><s:textfield name="yourlist[%{#ctr.index}].country"/></td>
</tr>
</s:iterator>
country
首字母小写。如果您需要使用 javascript 生成新行,您必须生成与
<s:textfield/>
“输出”相同的 HTML。标签(点击浏览器的 View Source
,了解它是如何生成的)。这将在目标 Action(必须具有相同的
List
和 setter
)上创建一个包含页面中所有值的新列表。无需单独对一行进行操作,您可以使用此更新(例如)一篇文章中的 10 行。
编辑
回答您的评论,如果您没有任何初始值,则不涉及迭代:您可以使用与添加新行相同的语法将第一行定义为列表的第一个元素。
不需要从 List 开始,唯一的要求是将列表格式的 HTML 元素发布到目标 List 中。
使用 this article 例如,要了解您需要创建哪些 javascript 和 HTML。
关于jsp - 如何获取Struts 2中Action类中jsp中填充的表格行的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16058547/