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

使用 Grails 构建富 Internet 应用程序,第 1 部分: 使用 Grails 和 Flex 构建 Web 应用程序

 2009-11-19 00:00:00 来源:WEB开发网   
核心提示: 您首先注意到的可能是布尔标志 transactional,Grails 构建在大量成熟的技术之上,使用 Grails 构建富 Internet 应用程序,第 1 部分: 使用 Grails 和 Flex 构建 Web 应用程序(4),包括 Spring,它使用 Spring 的声明性事务来修饰带

您首先注意到的可能是布尔标志 transactional。Grails 构建在大量成熟的技术之上,包括 Spring。它使用 Spring 的声明性事务来修饰带有事务的服务。如果您想执行数据更新,或希望其他事务服务能够使用这个服务,那么就要启用这个功能。您希望这个服务是只读的。它不会取代数据访问,因为您已经拥有处理这方面内容的域模型。

第一个服务操作获取所有新闻。第二个操作获取特定类别的新闻。在这里用到 GORM 的 where-样式的查找程序。它允许您传入一个名称/值对映射,以在 SQL 查询中构造一个 WHERE 子句。第三个操作让您可以使用特定标记搜索新闻。在这里使用的是 GORM 的动态查找程序。这样,您就可以将查询子句作为查找程序方法的名称的一部分。所以使用 findAllByTags 在标记列上执行查询。此外,还有注意 like 后缀;这是区分大小写的 SQL LIKE 子句。它允许您查找所有标记参数作为标记属性的子字符串的新闻。例如,如果一个新闻被标记为 “BarackObama”,它将在搜索 “obama” 时显示出来。

您创建了 3 种简单但强大的新闻搜索方式。注意,它们的语法都很简洁。如果您是一位 Java 程序员,就知道正常情况下要编写多少代码才能实现这些功能。搜索服务是很强大的,但现在还没有可供搜索的内容。您还需要一个用于管理每则新闻的服务,我称之为 Story 服务,如清单 3 所示。


清单 3. Story 服务

class StoryService { 
 
  boolean transactional = true 
 
  def create(story) { 
    story.votesFor = 0 
    story.votesAgainst = 0 
    log.info("Creating story="+story.title) 
    if(!story.save(flush:true) ) { 
      story.errors.each { 
        log.error(it) 
      } 
    } 
    log.info("Saved story="+story.title + " id=" + story.id) 
    story 
  } 
  def voteFor(storyId){ 
    log.info("Getting story for id="+storyId) 
    def story = Story.get(storyId) 
    log.info("Story found title="+story.title + " 
votesFor="+story.votesFor) 
    story.votesFor += 1 
    if(!story.save(flush:true) ) { 
      story.errors.each { 
        log.error(it) 
      } 
    } 
    story 
  } 
  def voteAgainst(storyId){ 
    log.info("Getting story for id="+storyId) 
    def story = Story.get(storyId) 
    log.info("Story found title="+story.title + " 
votesAgainst="+story.votesAgainst) 
    story.votesAgainst += 1 
    if(!story.save(flush:true) ) { 
      story.errors.each { 
        log.error(it) 
      } 
    } 
    story     
  } 
} 

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

Tags:使用 Grails 构建

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