Grails 查询分页 小试

首先声明,刚学grails没有几天,所以本文提到的方法只在本文的环境下测试通过,其他环境可能需要做一定的改动。


有domain-class User, 如下:

Java代码 复制代码
  1. class User{  
  2.     Long id  
  3.     Long version  
  4.     String name  
  5.     String password  
  6.     String toString(){  
  7.         return "{$name}"   
  8.     }  
  9.       
  10.     def static constraints =  
  11.     {  
  12.         name(name:true)  
  13.         password(blank:false, password:true)  
  14.     }  
  15. }  
class User{
	Long id
	Long version
	String name
	String password
	String toString(){
		return "{$name}" 
	}
	
	def static constraints =
	{
	    name(name:true)
	    password(blank:false, password:true)
	}
}


主键是ID,name可以重复。使用name查询。

grails在创建好domain-class之后使用grails generate-all user即可生成CRUD (Create/Read/Update/Delete)操作。我们查询可以使用list.gsp。只用做很小的改动即可。

1 新建search.gsp,与list.gsp同目录。内容如下:

Java代码 复制代码
  1. <html>  
  2.     <head>  
  3.          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>  
  4. <meta name="layout" content="main" />    
  5.          <title>User Search</title>  
  6.     </head>  
  7.     <body>  
  8.         <div class="body">  
  9.             <g:if test="${flash.message}">  
  10.             <div class="message">${flash.message}</div>  
  11.             </g:if>  
  12.            <g:form action="doSearch" method="post">  
  13.                <div class="dialog">  
  14.      <p>Enter user name below:</p>  
  15.                 <table  class="userForm">  
  16.                   <tr class='prop'>  
  17.                       <td valign='top' style='text-align:left;' width='20%'>  
  18.                           <label for='name'>Name:</label>  
  19.                       </td>  
  20.                       <td valign='top' style='text-align:left;' width='80%'>  
  21.                           <input id="name" type='text' name='name' value='${params.name}' />  
  22.   
  23.                       </td>  
  24.                   </tr>  
  25.                     
  26.                          
  27.                </table>      
  28.                </div>  
  29.                <div class="buttons">  
  30.                      <span class="formButton">  
  31.                         <input type="submit" value="Search"></input>  
  32.                      </span>  
  33.                </div>  
  34.             </g:form>  
  35.         </div>  
  36.     </body>  
  37. </html>  
<html>
    <head>
         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="layout" content="main" />  
         <title>User Search</title>
    </head>
    <body>
        <div class="body">
            <g:if test="${flash.message}">
            <div class="message">${flash.message}</div>
            </g:if>
           <g:form action="doSearch" method="post">
               <div class="dialog">
     <p>Enter user name below:</p>
                <table  class="userForm">
                  <tr class='prop'>
                      <td valign='top' style='text-align:left;' width='20%'>
                          <label for='name'>Name:</label>
                      </td>
                      <td valign='top' style='text-align:left;' width='80%'>
                          <input id="name" type='text' name='name' value='${params.name}' />

                      </td>
                  </tr>
                  
                       
               </table>    
               </div>
               <div class="buttons">
                     <span class="formButton">
                        <input type="submit" value="Search"></input>
                     </span>
               </div>
            </g:form>
        </div>
    </body>
</html>



2 修改UseController.groovy
i 新增search和doSearch

Java代码 复制代码
  1. def search = {  
  2.       
  3. }  
  4.   
  5. def doSearch = {  
  6.         if(params.name==''){  
  7.             flash.message="请输入想查询的用户名!"  
  8.             redirect(action:search)  
  9.         }else{  
  10.          flash.message = "查询结果如下:"  
  11.          redirect(action:'list',params:params)  
  12.         }  
  13. }  
    def search = {
    	
    }
    
    def doSearch = {
    		if(params.name==''){
    			flash.message="请输入想查询的用户名!"
    			redirect(action:search)
    		}else{
   	    	 flash.message = "查询结果如下:"
   	    	 redirect(action:'list',params:params)
    		}
    }


ii 修改list部分

Java代码 复制代码
  1. def list = {  
  2.     if(!params.max) params.max = 10  
  3.     [ userInstanceList: User.list( params ) ]  
  4.   }  
def list = {
    if(!params.max) params.max = 10
    [ userInstanceList: User.list( params ) ]
  }


改为

Java代码 复制代码
  1. def list = {  
  2.         if(!params.max)params.max=10  
  3.         if(params.name){  
  4.             return [count:User.countByName(params.name),userInstanceList:User.findAllByName(params.name,params)]  
  5.         }  
  6.         else{  
  7.             return [count:User.count(),userInstanceList:User.list(params)]                
  8.         }  
  9.    }  
 def list = {
    		if(!params.max)params.max=10
    		if(params.name){
    			return [count:User.countByName(params.name),userInstanceList:User.findAllByName(params.name,params)]
    		}
    		else{
    			return [count:User.count(),userInstanceList:User.list(params)]    			
    		}
    }



3 再修改list.gsp的分页部分

Java代码 复制代码
  1. <g:paginate total="${User.count}"/>  
<g:paginate total="${User.count}"/>


改为

Java代码 复制代码
  1. <g:paginate total="${count}" params="${params}" />  
<g:paginate total="${count}" params="${params}" />


OK,搞定

 

 

 

转自:http://andyjojo.javaeye.com/blog/340880

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值