WEB开发网
开发学院软件开发Java 使用 Grails 构建富 Internet 应用程序,第 2 部分... 阅读

使用 Grails 构建富 Internet 应用程序,第 2 部分: Grails 和 Google Web Toolkit

 2009-11-19 00:00:00 来源:WEB开发网   
核心提示: 搜索 API 服务现有的应用程序已有一个搜索业务服务,我们仅使用它的列表 API 为应用程序中的所有新闻提供一个列表,使用 Grails 构建富 Internet 应用程序,第 2 部分: Grails 和 Google Web Toolkit(2),看看这个服务的其他功能,如清单 1 所示,现

搜索 API 服务

现有的应用程序已有一个搜索业务服务。我们仅使用它的列表 API 为应用程序中的所有新闻提供一个列表。看看这个服务的其他功能,如清单 1 所示。


清单 1. 搜索业务服务
class SearchService { 
 
  boolean transactional = false 
 
  def list() { 
    Story.list() 
  } 
 
  def listCategory(catName){ 
    Story.findAllWhere(category:catName) 
  } 
   
  def searchTag(tag){ 
    Story.findAllByTagsIlike("%"+tag+"%") 
  } 
} 

listCategory 方法查找特定类别中的所有新闻。searchTag 方法查找带有特定标记的所有新闻。它不要求精确匹配,也不区分大小写。如前所述,到目前为止我们仅使用列表 API。现在我们创建一个使用这两个方法的新 Web 服务。您仅需将一个新方法添加到 ApiController,如清单 2 所示。


清单 2. 新的 ApiController
import grails.converters.* 
 
class ApiController { 
  // injected services 
  def searchService 
  def storyService 
 
  def search = { 
    def results= null 
    def tagResults = null 
    if (params.tag){ 
      tagResults = searchService.searchTag(params.tag) 
    } 
    def catResults = null 
    if (params.category){ 
      catResults = searchService.listCategory(params.category) 
    } 
    if (params.tag && params.category){ 
      def tagMap = [:] 
      tagResults.each{ story -> 
        tagMap[story.id] = story 
      } 
      results = catResults.findAll { tagMap[it.id] != null} 
    } else { 
      if (params.category){ 
        results = catResults 
      } else { 
        results = tagResults 
      } 
     } 
    render results as JSON 
  } 
} 

上一页  1 2 3 4 5 6 7  下一页

Tags:使用 Grails 构建

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接