`
garyli
  • 浏览: 176787 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

grails 查询结果分页 简单实现

阅读更多

我用的是groovy1.5和grails1.03,在使用<g:paginate/>标签的时候发现,不支持查询结果的分页显示,所以做了一些小改动,现在终于实现了。
首先找到<g:paginate/>标签所对应的groovy文件,在grails原文件夹的src\groovy\org\codehaus\groovy\grails\plugins\web\taglib下的RenderTagLib.groovy。
好了,我看了看,不支持查询结果分页的问题找到了,分页的时候没有将查询参数带上。好了,那么我就让它带上吧,于是我在grails-app\taglib\目录下新建了一个

MytagTagLib.groovy,然后将RenderTagLib.groovy的内容全部copy过来,修改paginate方法名为paginate2(以免调用时重叠),在RenderTagLib.groovy中227行的

if(attrs.params) linkParams.putAll(attrs.params)

 修改为

if(attrs.params && attrs.params=="form"){
	linkParams.putAll(params)
}

 由于params中有上次查询过的所有条件,所以将它直接传到后台就可以了。好了,这里&& attrs.params=="form"是我自己加上的以区别默认的查询分页,这样页面上也要做一点小改动

<g:paginate2 total="${flash.varName==null?0:flash.varName}" action="search" params="form"/>

 

好了,参数传递可以解决了,还有一个问题就是total的问题,你应该已经看到了,我在上面用的是flash.varName这个变量来传递total的,来看看我后台处理查询的代码:

def search = {

		def _max = params.max?params.max:10
		def results = Kmfile.findAllByFileNameLikeAndFileTypeLike(
			'%'+params.fileName +'%',
			'%'+params.fileType +'%',
			[max:_max,offset:params.offset]
		)
		flash.varName=Kmfile.countByFileNameLikeAndFileTypeLike(
			"%${params.fileName}%","%${params.fileType}%")		
		//设置显示用select内容
		params.ft_inlist = Kmfile.constraints.fileType.inList;
		render(view:'search',model:[kmfileList:results])

	}

 
countBy*用来计算总数很方便,之后它赋值给flash.varNaem,这样页面上就可以引用了。

好了,这就是我的简单的解决办法,当然默认用get方法传递参数有长度限制,有时间再改进吧!

 

分享到:
评论
5 楼 mccxj 2009-04-24  
不是已经提供个params的属性来添加路径的参数了么?
我对分页带上offset和max才不爽。我把她修改成只带page参数
4 楼 sphinxdwood 2009-04-24  
请问第22行有什么用?params.ft_inlist = Kmfile.constraints.fileType.inList; 
3 楼 garyli 2008-09-17  
再贴一个用createCriteria()实现的分页:
def search = {

		def _max = params.max?params.max:10
		def _offset = params.offset?params.offset:0
		/*
		def results = Kmfile.findAllByFileNameLikeAndFileTypeLike(
			'%'+params.fileName +'%',
			'%'+params.fileType +'%',
			[max:_max,offset:params.offset]
		)
		*/
		def c = Kmfile.createCriteria()
		def results = c {
			like("fileName", "%$params.fileName%")
			like("fileType","%$params.fileType%")
			firstResult(_offset)
			maxResults(_max)
		}

		flash.varName=Kmfile.countByFileNameLikeAndFileTypeLike(
			"%${params.fileName}%","%${params.fileType}%")
		params.ft_inlist = Kmfile.constraints.fileType.inList;
		render(view:'search',model:[kmfileList:results])

	}
2 楼 sword721 2008-09-16  
如果我用createCriteria()来做查询的话怎么做分页处理啊。
1 楼 garyli 2008-09-05  
有需要grails中文帮助文档的可以和我联系。

相关推荐

    grails实现分页技术

    4. **传递数据到视图**:最后,将查询结果和总记录数传递给视图。在`processPage`方法的末尾,你可以写: ```groovy [pageData: pageData, totalCount: totalCount] ``` 接下来,我们转向视图部分。在`processed....

    grails框架数据查询

    综上所述,Grails的查询机制强大而灵活,通过GORM提供的各种工具,开发者可以轻松地处理数据操作,实现高效的数据查询。结合源码阅读和工具使用,能更好地理解和优化Grails中的数据查询性能。在实际项目中,理解并...

    Grails 下拉框联动最优实现

    1. **缓存**:如果数据量大且频繁变动不大,可以考虑缓存查询结果,避免不必要的数据库查询。 2. **错误处理**:确保有合适的错误处理机制,当AJAX请求失败时,提供反馈信息。 3. **异步加载**:初始页面加载时,...

    一步一步学grails(5)

    本篇教程将介绍如何在Grails应用中创建一个根据产品编号进行组合查询,并以分页形式展示查询结果的功能。 首先,我们关注用户界面部分。在`list.gsp`页面上,我们需要添加一个“查找产品编号”的链接,用于触发查询...

    Grails Grails Grails

    2. **视图(View)**: 视图负责展示数据,通常使用GSP(Grails Server Pages)技术,这是一种结合了HTML和Groovy的模板语言,可以嵌入Groovy表达式和控制结构,实现动态内容的生成。 3. **控制器(Controller)**: ...

    学习grails框架时候自己写的例子

    Grails提供了方便的分页API,可以轻松地在控制器(Controller)中实现分页逻辑,并在视图(View)中展示结果。在这个例子中,你可能已经掌握了如何实现这一功能。 4. **数据库管理**:`contact_dev.sql`文件可能是...

    Grails GORM查询.pdf

    开发者可以使用AND和OR操作符来组合多个查询条件,以实现更复杂的查询逻辑。 在操作过程中,GORM提供的查询方式不仅限于上述内容,还包括criteria查询和Hibernate的面向对象查询语言HQL。Criteria查询是一种类型...

    使用 Grails 快速开发 Web 应用程序

    在了解了Grails的基本结构后,可以通过创建简单的控制器和领域类来实现基本功能。例如,创建一个用于联系人管理的控制器和领域类,处理CRUD操作。Grails的自动化工具如GORM(Grails Object-Relational Mapping)将...

    学生管理系统课程设计(grails)

    Grails支持动态查询,允许开发者通过简单的表达式进行复杂的数据库查询。同时,为了确保系统安全性,可以使用Spring Security插件来实现用户认证和授权,限制未授权访问。 六、分页功能 实现分页功能,Grails提供了...

    grails-用户手册

    GORM是Grails的持久化框架,它实现了Hibernate和ActiveRecord的功能,使得与数据库的交互变得简单。通过定义领域类,你可以轻松地完成CRUD(创建、读取、更新、删除)操作。 五、Grails插件系统 Grails的插件系统...

    Grails权威指南 Grails权威指南

    在Grails中,Controller处理请求,View呈现结果,Model则存储和管理业务数据。 3. **GORM(Grails Object-Relational Mapping)**:Grails的内置ORM工具,允许开发者以声明式的方式操作数据库,支持SQL的CRUD操作,...

    grails 文档

    通过配置URL映射,Grails允许开发者定义清晰、可读性强的URL结构,与控制器动作关联,实现RESTful API设计。 7. **构建与部署** Grails 使用Gradle作为构建工具,提供自动化构建、依赖管理等功能。构建的WAR文件...

    Grails案例

    - 批量删除:通过查询结果集,配合`each{}`或`all{}`迭代删除多条记录。 6. **Grails控制器(Controllers)** - 控制器是MVC架构中的关键部分,负责处理HTTP请求,调用业务逻辑,然后将结果传递给视图。 - 动态...

    Grails 中文参考手册

    Grails是一个基于Groovy语言的开源Web应用框架,它提供了高效的开发环境和强大的功能,使得构建动态网站和企业级应用变得简单高效。 1. **起步**: - **下载安装Grails**:首先,你需要从官方渠道下载最新版本的...

    Grails入门指南 -- 针对grails1.0.4更新

    **:通过创建一个简单的“Hello, Grails!”应用,展示了Grails的基本结构和运行流程。 - **核心概念**: - **领域模型**:定义应用的数据结构,通过实体类表示,遵循一定的命名规范。 - **控制器**:处理HTTP请求...

    grails ajax

    Grails 是一个基于Groovy语言的开源Web应用框架,它构建在Spring Boot之上,提供了丰富的功能和便捷的...无论是简单的数据获取还是复杂的业务流程,Grails都能提供强大的支持,让Ajax在Grails应用中发挥出应有的价值。

    Grails中文参考手册

    Grails 提供了对多语言环境的支持,通过 properties 文件管理不同语言的文本资源,便于实现应用程序的国际化。 **Grails 文档** "Grails 中文参考手册" 是一套详细的 Grails 学习资料,涵盖了框架的所有核心组件、...

    Eclipse下搭建Grails项目

    【Grails项目搭建详解】 Grails是一个基于Groovy语言的开源Web应用框架,它简化了开发过程,尤其适合快速构建动态网站。在Eclipse中搭建Grails项目可能相对复杂,但通过以下步骤,即使是初学者也能顺利进行。 1. *...

    eclipse开发grails插件

    **正文** 在IT行业中,开发Web应用程序时,我们经常使用各种框架来提高效率和灵活性。Grails就是一个基于Groovy语言的开源Web应用...无论是新手还是经验丰富的开发者,都能从中受益匪浅,实现高效的Grails应用开发。

    Grails基础教程.pdf

    - **自动数据库移植**:Grails支持自动数据库迁移,通过简单的配置即可实现数据库结构的更新。 **3.2 日志配置** 合理的日志记录对于追踪问题、调试代码至关重要。 **3.3 数据源** - **数据源和环境**:不同环境...

Global site tag (gtag.js) - Google Analytics