使用 Grails 构建富 Internet 应用程序,第 2 部分: Grails 和 Google Web Toolkit
2009-11-19 00:00:00 来源:WEB开发网清单 2 仅演示了新的搜索方法。它需要两个请求参数:tag 和 category。它能够分别或同时处理这两个参数。像 Grails 应用程序中的所有请求参数一样,这两个参数是通过 params 对象公开的。如果存在 tag 参数,那么将在搜索服务中调用 searchTag 方法。如果存在 category 参数,那么将在搜索服务中调用 listCategory 方法。如果两个参数都具备的话(比如 params.tag 和 params.category),那么将变得很有趣。
我们只希望显示调用搜索服务时返回的两个新闻列表中共有的新闻。所以首先要使用 [:] 符号创建一个空映射。这是一个来自 Java 的 HashMap。然后循环遍历列表获得带有特定标记的新闻,并以每条新闻的 ID 为键将它们放入映射中。对每个闭包使用标准的 Groovy 语法。然后您就可以在分类搜索中看到所有其 ID 出现在您创建的映射中的新闻。使用 Groovy 添加到列表的便捷的 findAll 方法,并且再次使用闭包。这次将对闭包使用 Groovy 的简化符号(‘it’ 对象)。最后,不管结果如何,来自 Grails 的 JSON 转换器会将该列表转换成一个 JSON 对象。
在上一篇文章中,您看到了通过 Grails 将数据呈现为 XML 有多么容易。同样,Grails 也可以很方便地将数据呈现为 JSON。现在,您可以测试新的 Web 服务。根据 Grails 约定,已知 Web 服务的 URL 为 http://<root>/digg/api/search。现在给出一个示例输出,这是搜索类别为 “technology” 的内容得到的结果,如清单 3 所示。
清单 3. 示例搜索输出[{"id":1,"class":"Story","category":"technology","description":"How to get
a ternary operator in Scala","link":"http://blog.tmorris.net/does-scala-have-
javas-ternary-operator/","tags":"programming scala","title":"Does Scala have
Java's ternary operator?","votesAgainst":0,"votesFor":0},{"id":3,"class":"Story",
"category":"technology","description":"New animations available in the Flex 4 'Gumbo'
release.","link":"http://graphics-geek.blogspot.com/2008/10/flex-specificanimations
-posted.html","tags":"flash flex","title":"Flex Specific Animations Posted",
"votesAgainst":0,"votesFor":0}]
更多精彩
赞助商链接