我的域类中有三个字段,即client_id,client_name,client_address。我想在list.gsp页面的client_name的基础上进行搜索。我尝试过了,但没有为我工作。我是新来的grails。我是否遵循正确的方法或任何可能的解决方案?
list.gsp页:-
<g:if test="${flash.message}">
<div class="message" role="status">${flash.message}</div>
</g:if>
<fieldset class="form">
<g:form action="list" method="GET">
<div class="fieldcontain">
<label for="query">Search for Client Name:</label>
<g:textField name="query" value="${params.query}"/>
</div>
</g:form>
</fieldset>
ClientController.groovy:-
def list(Integer max) {
params.max = Math.min(max ?: 10, 100)
def taskList = Client.createCriteria().list (params) {
if ( params.query ) {
ilike("client_name", "%${params.query}%")
ilike("client_id", "%${params.query}%")
}
}
[clientInstanceList: taskList, clientInstanceTotal: Client.count()]
}
最佳答案
如果您的代码Grails会生成如下查询
其中更低的(this_.client_name)喜欢吗? 和较低(this_.client_id)像? )
我猜您需要将其更改为或传导。
def taskList = Client.createCriteria().list (params) {
if ( params.query ) {
or{
ilike("client_name", "%${params.query}%")
ilike("client_id", "%${params.query}%")
}
}
}
关于grails - 搜索不适用于该领域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20675315/