【问题标题】:How to un-filter in Grails?如何在 Grails 中取消过滤?
【发布时间】:2009-08-25 12:53:56
【问题描述】:

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

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

【问题讨论】:

  • > 显然,我不想要一个硬编码的 href 将用户重定向到正常的“列表”操作。为什么不?我不太明白您想要实现什么行为/用户交互。

标签: grails post filter


【解决方案1】:

有很多方法可以做(我认为)你想做的事情。一个想法是在与返回所需列表的过滤器操作相同的控制器中创建另一个操作。我可以尝试给你一个例子,但从你发布的代码中,不清楚你来自哪个视图,清除过滤器后应该显示哪个视图,或者硬编码的 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)])
}

然后你可以在你的页面上添加一个标签,而不是像这样的硬编码锚标签: 清除过滤器

希望对你有帮助 戴夫

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-28
    • 2011-08-11
    相关资源
    最近更新 更多