我想创建一个搜索我的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>
答案 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;,它只是一个错字,但如果您从代码中复制粘贴,则代码中会出现拼写错误:)