我有一堆数据,我需要一个使用Grails的数据过滤器
我正在尝试为我的数据制作一个过滤器,以便其他人可以看到它,比如说我有一系列的事件,比如日历,我想看到所有有名称或标题并带有“足球”字样的事件。 我一直在想怎么做,但没什么效果,我也尝试过使用filterPane插件,但效果不太好,我更喜欢自己写一些东西,可能会上传到Grails插件网页供将来参考我有一堆数据,我需要一个使用Grails的数据过滤器,grails,plugins,groovy,filter,Grails,Plugins,Groovy,Filter,我正在尝试为我的数据制作一个过滤器,以便其他人可以看到它,比如说我有一系列的事件,比如日历,我想看到所有有名称或标题并带有“足球”字样的事件。 我一直在想怎么做,但没什么效果,我也尝试过使用filterPane插件,但效果不太好,我更喜欢自己写一些东西,可能会上传到Grails插件网页供将来参考 如果您需要任何帮助,我们将不胜感激。您可以通过示例进行查询,如果您只需要按相等进行筛选,则可以使用findAllWhere。否则,您需要使用条件生成器生成相应的查询。如果查询位于域类中,请尝试: def
如果您需要任何帮助,我们将不胜感激。您可以通过示例进行查询,如果您只需要按相等进行筛选,则可以使用findAllWhere。否则,您需要使用条件生成器生成相应的查询。如果查询位于域类中,请尝试:
def matches = Book.findAllByTitleLike("wonderful")
如果您不想担心大写/小写:
def matches = Book.findAllByTitleILike("wonderful")
如果您的书名在收藏中:
def books = ['Wonderful Tonight', 'Atlas Shrugged', 'A Tale of Two Cities']
def matches = books.findAll{it.indexOf("wonderful") > -1} // returns []
matches = books.findAll{it.indexOf("Wonderful") > -1} // returns ['Wonderful Tonight']
matches = books.findAll{it.toLowerCase().indexOf("wonderful") > -1} // returns ['Wonderful Tonight']
更新:
现在我们对您的问题有了更完整的描述,让我们找出一种简化的方法来解决它
今天,您希望通过事件标题及其日期进行搜索,因此我们将从这里开始,然后看看我们如何概括这一点,并制定更完整的解决方案
我们的总体流程如下所示:
<g:form controller='entry' action='searchResults'>
Entry Title: <g:textField name="title" value="${title}" />
Entry Date: <g:datePicker name="day" value="${day}" precision="day" />
<g:submitButton name="submit" value="Search" />
</g:form>
及
最后,让我们在grails app/views/entry中创建一个searchResults.gsp
<h1>Results</h1>
<g:each in=${results}>
${it}
</g:each>
从简单开始,不断改进,你很快就会掌握窍门
祝你好运 该插件似乎满足了您的要求。哦,我希望您不必为过滤器将多个域类连接在一起,因为这可能会非常棘手。;)我只有一个主要的课程条目,findAllWhere听起来不错。这不也会过滤描述吗??我不需要过滤描述,只需要根据事件的标题。findAllWhere也能工作吗?findAllWhere方法听起来不适合您的情况。它只在您可能需要某种形式的类似查询的地方查找精确匹配。在您的情况下,我建议您阅读grails用户指南中的createCriteria方法。我更新了信息,使之专门针对我的项目。我只有一个名为Entry的主域类,所以我想它应该是def matches=Entry.findallbyttlelike(“Soccer”),我把这段代码放在哪里?用什么方法?那我怎么称呼它才能让过滤器工作呢??我还需要过滤活动将要发生的日期,比如说我想看看6月23日到27日之间发生的所有活动。再次感谢!!我希望你能帮助我!另一张海报提到了过滤器插件,不幸的是,我还没有足够的代表直接对此发表评论。:-)我会暂时避免这一次,它似乎处于衰变状态,上一次活动是在2009年2月,所以在这一点上它似乎已经死了。我添加了一个更新来更好地解释…Proflux:我做了你说的一切,当我在search.gsp中查找一个单词时,它会给我一个错误:“错误处理GroovyPageView:Tag[each]缺少所需的属性[in]”。你知道发生了什么事以及如何解决吗?我要感谢你,你帮了我大忙!此外,结果应更新表格并显示在同一表格中。所以这个表应该更新为searchResults,对吧?哎呀,看起来我忘记了g:each标记中的一些引号。将in=${results}更改为in=“${results}”。我尝试了它,但它似乎不起作用。。。或者我做错了什么,但是我按照页面上的说明做了与他们在示例中做的相同的事情,这给了我一个错误
def searchResults = {
def entryCriteria = Entry.createCriteria()
def results = entryCriteria.list {
if(params?.title) {
ilike{"title","%${params.title}%"
}
if(params?.day) {
eq("eventDate", params.day)
}
}
render(view:'searchResults', model:['results':results])
}
<h1>Results</h1>
<g:each in=${results}>
${it}
</g:each>
def results = Entry.findByTitleILike(params?.title)