Grails 查询分页 小试

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


有domain-class User, 如下:

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同目录。内容如下:
<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
    def search = {
    	
    }
    
    def doSearch = {
    		if(params.name==''){
    			flash.message="请输入想查询的用户名!"
    			redirect(action:search)
    		}else{
   	    	 flash.message = "查询结果如下:"
   	    	 redirect(action:'list',params:params)
    		}
    }

ii 修改list部分
def list = {
    if(!params.max) params.max = 10
    [ userInstanceList: User.list( params ) ]
  }

改为
 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的分页部分
<g:paginate total="${User.count}"/>

改为
<g:paginate total="${count}" params="${params}" />

OK,搞定

猜你喜欢

转载自andyjojo.iteye.com/blog/340880