分页将重置行的复选框



我有一个GSP,其中包含一些带有复选框的复选框,允许用户选择几行。

<table>
<thead>
<tr>
// Column headers
</tr>
</thead>
<tbody>
<g:each in="${itemList}" status="i"
var="instance">
<tr class="${(i % 2) == 0 ? 'even' : 'odd'}">
// Some other rows
<td>
<g:checkBox name="selected"
value="${instance.id}"
checked="false" />
</td>
</tr>
</g:each>
</tbody>

还有我桌子下面的分页:

<div class="pagination">
<g:paginate total="${total}" params="${params}"/>
</div>

现在的问题是,当我从第 1 页 -> 页 2 -> 然后切换回第 1 页时,第 1 页的所有复选框都会重置。

当分页调用列表控制器方法时,我在调试器中观察以下内容时,通过在调试器中观察以下内容来检查页面切换的以下内容:

params.list('selected')

但不幸的是,该列表是空的。

分页不会提交表单(或者至少不像您想象的那样;我真的不记得底层逻辑是否使用表单(,因此您的复选框没有提交到任何地方。

您需要考虑提交表单的不同方法,以便保留复选框选择。 两种方法可能是:

  1. 编写您自己的分页标记,该标记包装 g.paginate 并修改发送的参数,以便包含您的复选框值。

  2. 将 ajax 处理添加到复选框中,以便在更改时立即提交它们。

最新更新