特定行动后保留排序 - Grails

时间:2016-10-17 06:42:53

标签: grails gsp

我有一个gsp表单,其中显示了具有详细信息的员工列表(即员工姓名,名称,部门,状态)。所有这些列都是可排序的。在我的控制器类中调用特定操作(即,将员工的状态从活动状态更改为非活动状态,反之亦然)后,排序会受到干扰。我在从DB

检索时使用以下代码进行排序
    String strSort = params.sort ?: "empId";
    strSort += " "
    strSort += params.order?: "asc";

在发布"状态更改"之前,我是否可以保留排序顺序?行动?如果它是如何实现的?

2 个答案:

答案 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"

希望能帮助您更好地理解