Grails:findAllByTitle()作为搜索功能?

时间:2016-04-18 00:52:51

标签: grails gorm

我想创建一个搜索我的Grails Web应用程序但是我没有运气得到我想要的结果。我目前正在使用Grails 3.0.11,根据一篇文章,可搜索的插件已经过时,但我无法获得elasticsearch插件。我决定尝试使用findAllByTitle("%test%"),我认为它会起作用,但我不确定我做错了什么。

某个标题会保存到本地数据库中,并且在我的视图中搜索时,我希望它显示已保存的标题列表,例如,如果我要键入T,它将显示" Test1",& #34; Test2"和" Test3"。我也没试过executeQuery()。

Title.groovy

class Titles {

    byte[] branchImage
    String branchTitle

    static constraints = {
        branchImage(maxSize: 10 * 1024 * 1024)
    }
    static mapping = {
    }
}

TitleController.groovy

class TitleController {
    def search(){
        def results = Title.findAllByBranchTitleIlike("%Test%")
        [results:results]
    }
}

main.gsp

<body>
    <div class="header-search">
    <g:form action="search">
        <g:textField name="search" class="search-field" value="search"/>
            <button type="submit" class="search-submit"><i class="fa fa-search fa-lg"></i></button>
    </g:form>
    </div>
</body>

的search.gsp

<body>
    <g:each var="r" in="${results}">
        <li>${r.branchTitle}</li>
    </g:each>
</body>

3 个答案:

答案 0 :(得分:0)

使用findAllBy ...而不是findBy .... findBy ... variant只返回一个结果。请参阅docs

我还会将字段'VarTitle'重命名为'varTitle'(或者为什么不将'title'重命名)。 Java约定不使用大写字段/方法名称。

答案 1 :(得分:0)

在您的控制器中

class TitleController {
    def search(){
        def results = Title.findAllByVarTitle("%Test%")
        render(view: "search",model: [results:results])
    }
}

应该做的伎俩。 如果您想要所有结果而不是一个结果,则需要使用findAllBy。

答案 2 :(得分:0)

您输入了类别标题&#39;,它只是一个错字,但如果您从代码中复制粘贴,则代码中会出现拼写错误:)