精通 Grails: 用定制 URI 和 codec 优化 Grails 中的 URI
2009-10-26 00:00:00 来源:WEB开发网现在 Blogito 可以支持多个用户,下一步是让读者能按作者来查看这些条目。
按作者显示条目
我们的最终目的就是支持像 http://localhost:9090/blogito/entry/list/jdoe 这样的 URI。注意到,User.login 出现在此 URI 内,而不是主键。在这个过程中,还需要对分页(pagination)做稍许调整。
EntryController.list 的搭建(scaffolded)行为不允许按 User 过滤。清单 5 显示了 list 闭包的默认实现:
清单 5. 默认的 list 实现def list = {
if(!params.max) params.max = 10
[ entryInstanceList: Entry.list( params ) ]
}
若要支持在路径的末尾允许出现一个可选的用户名,还需要对之进行扩展。编辑 grails-app/controllers/EntryController.groovy 并添加一个新的 list 闭包,如清单 6 所示:
清单 6. 按作者限制此列表class EntryController {
def scaffold = Entry
def list = {
if(!params.max) params.max = 10
flash.id = params.id
if(!params.id) params.id = "No User Supplied"
def entryList
def entryCount
def author = User.findByLogin(params.id)
if(author){
def query = { eq('author', author) }
entryList = Entry.createCriteria().list(params, query)
entryCount = Entry.createCriteria().count(query)
}else{
entryList = Entry.list( params )
entryCount = Entry.count()
}
[ entryInstanceList:entryList, entryCount:entryCount ]
}
}
- ››精通Photoshop之通道详解
- ››定制个性化的对话框窗口类
- ››定制 SWT/RCP 界面:如何编写一个漂亮的 SWT/RCP ...
- ››定制基于 Visual studio 2005 平台 Windows CE(AR...
- ››定制版黑雨 blackra1n 越狱3.1.2 全系 iPhone
- ››定制 Eclipse RCP 应用程序,第 1 部分: 可与 SWT...
- ››精通 Grails: 使用 Grails 进行单元测试(单元测试...
- ››精通 Grails: 创建自定义插件
- ››精通 Grails: 在企业中使用 Grails
- ››精通 Grails: Grails 与移动 Web
- ››精通 Grails: Grails 与遗留数据库
- ››精通 Grails: RESTful Grails
更多精彩
赞助商链接