我有一个gsp表单,其中显示了具有详细信息的员工列表(即员工姓名,名称,部门,状态)。所有这些列都是可排序的。在我的控制器类中调用特定操作(即,将员工的状态从活动状态更改为非活动状态,反之亦然)后,排序会受到干扰。我在从DB
检索时使用以下代码进行排序 String strSort = params.sort ?: "empId";
strSort += " "
strSort += params.order?: "asc";
在发布"状态更改"之前,我是否可以保留排序顺序?行动?如果它是如何实现的?
答案 0 :(得分:0)
我可以想到两种方法:
将您的排序和订单参数传递给您的操作并将其发回 结果。
每次更新时都会在会话中存储两个参数。
要从会话中存储和检索,请使用以下内容:
private DEFAULT_SORT = 'myDefaultSort'
def myAction() {
if (params.sort && params.sort != session.getAttribute('sort-' + actionName)) {
session.setAttribute('sort-' + actionName, params.sort)
}
params.sort = session.getAttribute('sort-' + actionName)?:DEFAULT_SORT
...
//Your existing logic
}
如果您收到新的/不同的排序参数,则将其保存到会话中。然后尝试从会话加载现有参数,如果没有存储任何值,则会得到默认值。
答案 1 :(得分:0)
正如rvargas所建议的,可以通过各种方法实现。 queuekit plugin尚未正确发布,因此你可以克隆grails 3 / grails2分支,具体取决于你正在使用它,并克隆测试网站以便在插件中弄乱这个概念:
简而言之您需要separate out your search feature并且您可以通过会话值执行此操作或将其作为子集列表迭代发送。
我决定不使用会话。然后,当我单击删除bean is bound back in with the request sent(要删除的ID)
时最后它relists所以不需要在这里做任何其他事情:
当我调用ajax reloadPage或delete
函数使用的更多postAction时,最重要的一点是我serialize search form。实际搜索对象保存在tidy manner here
但是如果这太复杂了,那么在非常控制器链接中,会话搜索被注释掉了。我认为你可以只是启用忘记所有这些复杂功能并拥有一个searchAgain()功能,如果它在我的控制器中是xhr
而呈现_list模板,而不是绑定它绑定session.search
改为映射,如果你沿着这条路走下去,你可能想要改变from g:render to g:include action="searchAgain"
希望能帮助您更好地理解