2016-04-18 96 views
0

我想爲我的Grails Web應用程序創建一個搜索,但是我無法獲得我想要的結果。我目前正在使用Grails 3.0.11,根據一篇文章,可搜索插件已過時,但我無法使elasticsearch插件也能正常工作。我決定嘗試使用findAllByTitle(「%test%」),我認爲它會工作,但我不知道我做錯了什麼。Grails:findAllByTitle()作爲搜索功能?

某個標題被保存到本地數據庫,當在我的視圖中搜索時,我希望它顯示保存的標題列表,例如,如果我輸入T,它將顯示「Test1」,「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> 

回答

0

使用findAllBy的......而不是findBy ...。 findBy ...變體只返回單個結果。見docs

此外,我會重命名字段「VarTitle」爲「varTitle」(或爲什麼不只是'標題')。 Java約定不使用大寫字段/方法名稱。

+0

感謝您的回覆快有一個錯字。我提出了您的建議更改,但仍然無法實現。 – Tyler

+0

我搜索標題後,當我重定向到titles/search.gsp時,我的search.gsp未呈現保存到本地數據庫的任何標題。他們確實存在並保存正確,但我無法呈現我搜索的標題 – Tyler

+0

您現在的控制器代碼是什麼?如果它仍然添加模型變量結果,請嘗試在您的gsp(任何位置)中插入$ {results}並查看打印結果。 – BhathiyaW

0

在你的控制器

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

應該做的伎倆。 如果你想要所有的結果而不是一個,你需要使用findAllBy。

+0

嗯仍然沒有成功!我改變它findAllBy但search.gsp仍然沒有顯示任何結果後,我搜索的東西。 – Tyler

+0

我是否還需要更改我的search.gsp呢?因爲現在它說不能解決符號'結果' – Tyler

+0

剛剛意識到你在gsp中使用$ {results}。您應該將其更改爲$ {r},因爲var =「r」 –

0

你鍵入「類圖書」,它只是一個錯字,但如果你複製從您的代碼粘貼它,你在你的代碼:)