grails多条件搜索功能实现1

以GDepot为例:

1.创建搜索页面(searchForm.gsp):

代码如下:

<%@ page import="gdepot.Goods" %>





Search goods
















 
 


 


 
                                   

         


 

 to:    
                                   

 







第二步:找到 GoodsController.groovy文件

   添加一个空方法:def  searchForm(){};或者空的闭包:def searchForm={}

第三步:添加一个闭包或者方法(def search={})方法名要和搜索页面form的action一致(如上红色加下划线处)

代码如下:

def  search={
       if(!params.max)params.max=4  //这里的params.max=4是指一业所要显示的最多个数,此处为每页显示4条信息
    
def searchClosure={
   if(params.categoryName){
     category{
       eq('categoryName',params.categoryName)
     }
   }
   if(params.title){
      like('title',"%${params.title}%")
   }
   if(params.priceLow){
       ge('price',new BigDecimal(params.priceLow))
   }
   if(params.priceHigh){
     le('price',new BigDecimal(params.priceHigh))
   }
   if(params.description){
     like('description',"%${params.description}%")
   }
   
}

def c=Goods.createCriteria()
def goodsList=c.list(params,searchClosure)//此处有两个参数,意思是第一个:一次查询的个数,第二个是提交上来的查询条件

def goodsCount=Goods.count               //求满足条件的记录数

render(view:'index',model:[goodsInstanceList:goodsList,goodsInstanceCount:goodsCount])//发送到view页面,且同时发送两个参数过去
    }

view(index.gsp)页面代码如下:

<%@ page import="gdepot.Goods" %>





<g:message code="default.list.label" args="[entityName]" />







${flash.message}













       





















${fieldValue(bean: goodsInstance, field: "title")}${fieldValue(bean: goodsInstance, field: "description")}${fieldValue(bean: goodsInstance, field: "price")}${fieldValue(bean: goodsInstance, field: "category")}






你可能感兴趣的:(grails学习笔记)