4

我有以下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>
4

1 回答 1

3

我不完全理解您的页面,但您需要使用迭代器(如 @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浏览器,了解它是如何生成的)。

这将在目标操作(必须List与 a相同setter)上创建一个包含页面中所有值的新列表。

无需单独对一行进行操作,您可以使用此更新(例如)一篇文章中的 10 行。


编辑

回答您的评论,如果您没有任何初始值,则不涉及迭代:您可以使用与添加新行相同的语法将第一行定义为列表的第一个元素。

不需要从 List开始,唯一的要求是发布要在目标List 中设置的列表格式的 HTML 元素。

本文为例,了解您需要创建哪些 javascript 和 HTML。

于 2013-04-17T12:00:17.073 回答