精通Grails: 用定制URI和codec优化Grails中的URI - 编程入门网
>
${entryInstance.author} 在 User 类上调用 toString() 方法。也可以使用 ${entryInstance.author.name} 来显示您所选择的字段。还可以使用此语法随心所欲地遍历这些类的嵌 套结构。 现在,我们就可以看看所做的这些变更的实际效果了。键入 grails run-app 并在 Web 浏览器内访问 http://localhost:9090/blogito/。屏幕应该类似于图 1: 图 1. 显示了新添加的作者的条目 现在 Blogito 可以支持多个用户,下一步是让读者能按作者来查看这些条目。 精通Grails: 用定制URI和codec优化Grails中的URI(4)时间:2011-08-02 IBM Scott Davis按作者显示条目 我们的最终目的就是支持像 http://localhost:9090/blogito/entry/list/jdoe 这样的 URI。注意到 ,User.login 出现在此 URI 内,而不是主键。在这个过程中,还需要对分页(pagination)做稍许调整 。 EntryController.list 的搭建(scaffolded)行为不允许按 User 过滤。清单 5 显示了 list 闭包 的默认实现: 清单 5. 默认的 list 实现
若要支持在路径的末尾允许出现一个可选的用户名,还需要对之进行扩展。编辑 grails- app/controllers/EntryController.groovy 并添加一个新的 list 闭包,如清单 6 所示: 清单 6. 按作者限制此列表
精通Grails: 用定制URI和codec优化Grails中的URI(5)时间:2011-08-02 IBM Scott Davis您应该注意到的第一件事情是,若终端用户没有提供 params.max 和 params.id 二者的值,就用默认 值填充。现在,先不要担心 flash.id — 我稍后在探讨有关分页问题的时候还会对之进行详细讨论。 params.id 值通常是一个整型 — 确切的说是主键。我们一般习惯于 /entry/show/1 和 entry/edit/2 这样的 URI。我本可以在 grails-app/conf/UrlMappings.groovy 内设置一个映射以便返 回一个描述性更好的名称,比如 params.name 或 params.login,但现有的映射已经获取了操作名称后的 路径元素并将其存储在 params.id 内。我只是充分利用了现有的行为。在 URLMapper.groovy 内,如清 单 7 所示,可以看到返回 params.id 的默认映射: 清单 7. UrlMappings.groovy 内的默认映射
由于这不是 User 的主键,所以不能像往常那样使用 User.get(params.id)。相反,必须使用 User.findByLogin(params.id)。 如果找到了一个匹配的 User,就需要创建一个查询块。这就需要用到 Hibernate Criteria Builder 。在本例中,我们限制了列表只包含匹配某特定作者的那些条目。同样地,我们注意到 GORM 也允许您从 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |