如何在Grails中取消过滤?

时间:2009-08-25 12:53:57

标签: grails post filter

我正在开发Grails应用程序。有一个域类“参与者” - 在视图中可以选择一些过滤器。这些过滤器通过相应的控制器应用。将过滤器应用于选择后,结果将被过帐 现在的问题是,我不知道如何还原这些过滤器或清除它们。显然,视图中的简单HTML重置按钮将不起作用,因为过滤结果为POST

谁能告诉我,如何清除使用的过滤器?
我不想要硬编码的href将用户重定向到正常的“列表”操作。
有想法吗?

1 个答案:

答案 0 :(得分:4)

有很多方法可以做(我想)你想做的事情。一个想法是在与返回所需列表的过滤器操作相同的控制器中创建另一个操作。我可以尝试给你一个例子但是从你发布的代码中不清楚你来自哪个视图,清除过滤器后应该显示哪个视图或硬编码的id(1)id来自哪里。此外,您发布的代码是否可能已被修改以试图解决此问题?似乎根本没有调用getParticipants方法。

如果您想回答其中一些问题:开始视图,目标视图(清除过滤器后),涉及的控制器以及ID的来源,我可以尝试给您一个更好的答案。

感谢额外的信息。这是一种可能的解决方案。我没有尝试这个,所以语法可能不准确,但它会让你开始:

看起来如果没有过滤器,您将获得会议的所有参与者。如果这是正确的,那么你可以将这样的动作添加到ParcipantController.groovy

def clearFilter = {
    def conference = Conference.get(params.id)
    def participants = conference.participants
    render(view:'list', model:[participants: participants, 
     participantsTotal: participants.size(),
     startDate:conference.start, 
     endDate:conference.end,
     canWrite: accessRightsService.canWrite(request.beholder, conference)])
}

然后您可以在页面中添加标记,而不是像这样的硬编码锚标记: 清除过滤器

我希望有帮助, 戴夫