代码之家  ›  专栏  ›  技术社区  ›  Gnark

如何在Grails中取消过滤?

  •  2
  • Gnark  · 技术社区  · 17 年前

    我正在开发Grails应用程序。有一个域类“参与者”——在视图中可以选择一些过滤器。这些过滤器通过相应的控制器应用。一旦对所选内容应用了过滤器,结果就会被发布。
    现在的问题是,我不知道如何恢复或清除这些过滤器。显然,视图中的一个简单的HTML重置按钮不能工作,因为筛选结果是 POST 预计起飞时间。

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

    1 回复  |  直到 14 年前
        1
  •  4
  •   Robert Munteanu    17 年前

    有很多方法可以做你想做的事。一种想法是在同一个控制器中创建另一个操作,作为返回所需列表的筛选器操作。我可以给你举个例子,但是从你发布的代码来看,还不清楚你来自哪个视图,在清除过滤器之后应该显示哪个视图,或者硬编码ID(1)来自哪里。此外,是否有可能您发布的代码已被修改以解决此问题?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)])
    }
    

    然后,您可以向页面添加标记,而不是像下面这样硬编码的定位标记: 清除滤波器

    希望有帮助, 戴夫

    推荐文章