我正在开发 Grails 应用程序。有一个域类“参与者” - 在 View 中可以选择一些过滤器。这些过滤器通过相应的 Controller 应用。将过滤器应用于选择后,结果就会发布。
现在的问题是,我不知道如何恢复这些过滤器或清除它们。显然, View 中的简单 HTML 重置按钮将不起作用,因为过滤结果是 POST
编辑的。
谁能告诉我,如何清除使用过的过滤器?
我不需要硬编码的 href
来将用户重定向到正常的“列表”操作。
有什么想法吗?
最佳答案
有很多方法可以做(我认为)你想做的事情。一种想法是在同一 Controller 中创建另一个操作作为返回所需列表的过滤器操作。我可以尝试给您举一个例子,但从您发布的代码来看,不清楚您来自哪个 View 、清除过滤器后应显示哪个 View 或硬编码 id (1) id 来自何处。另外,您发布的代码是否可能已被修改以试图解决此问题? getParticipants 方法似乎根本没有被调用。
如果您想回答其中一些问题:起始 View 、目标 View (清除过滤器后)、涉及的 Controller 以及 id 来自哪里,我可以尝试给您更好的答案。
感谢您提供额外信息。这是一种可能的解决方案。我没有尝试过这个,所以语法可能不准确,但它会让你开始:
看起来,如果没有过滤器,您将获得 session 的所有参与者。如果这是正确的,那么您可以将这样的操作添加到 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)])
}
然后您可以向页面添加一个标记,而不是像这样的硬编码 anchor 标记: 清除过滤器
希望对您有所帮助, 戴夫
关于grails - 如何在 Grails 中取消过滤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1328100/