首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Grails Bootstrap XmlSlurper服务无结果

Grails Bootstrap XmlSlurper服务无结果
EN

Stack Overflow用户
提问于 2012-08-27 19:01:47
回答 2查看 173关注 0票数 0

我是Grails的新手,正在做我的小项目。我遇到的问题是我的XML读取服务-- ReadService --有一个返回XmlSlurper()的函数read()。函数读取xml文件,就像它使用println在控制台中写入文件一样。但是当我尝试在Bootstrap中打印结果XmlSlurper时,我什么也得不到。

代码语言:javascript
复制
class BootStrap {
  def ReadService

  def init = { 
     servletContext ->
     def xml = ReadService.read()
     println xml
  }
}

谁能告诉我我哪里做错了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-27 20:27:56

看起来你只是把你的服务拼写错了。您的ReadService必须保存在grails-app/services中。

要使用该服务,您必须像这样声明它们

代码语言:javascript
复制
def readService

init中,您可以按如下方式使用它们:

代码语言:javascript
复制
def xml = readService.read()

如你所见,第一个字母必须是小写的。

票数 1
EN

Stack Overflow用户

发布于 2012-08-28 12:59:02

好了,我现在明白了问题不在于读取xml本身,而在于使用它进行引导,因为将服务名称更改为lovercase会有所帮助。我使用ReaderService读取带有addresses的xml文件并构建address对象。下面是我的Bootstrap代码:

代码语言:javascript
复制
class BootStrap {
     def readService 

      def init = { 
         servletContext ->
         def xml = readService.read()
         println xml
       def adress = new mobilmed.Adres(ulica:xml.adress.street, dom:xml.adress.house, miejscowość:xml.adress.residance, kodPocztowy:xml.adress.postCode, poczta:xml.adress.post).save()
        if(adres.hasErrors()){
       println adres.errors}
      }
}

当我运行它时,我得到了典型的“没有这样的属性”错误。

代码语言:javascript
复制
| Error 2012-08-28 06:42:36,784 [pool-7-thread-1] ERROR context.GrailsContextLoader  - Error executing bootstraps: No such property: adres for class: BootStrap
Message: No such property: adres for class: BootStrap
   Line | Method
->>  10 | doCall                           in BootStrap$_closure1
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|   301 | evaluateEnvironmentSpecificBlock in grails.util.Environment
|   294 | executeForEnvironment . . . . .  in     ''
|   270 | executeForCurrentEnvironment     in     ''
|   303 | innerRun . . . . . . . . . . . . in java.util.concurrent.FutureTask$Sync
|   138 | run                              in java.util.concurrent.FutureTask
|   886 | runTask . . . . . . . . . . . .  in java.util.concurrent.ThreadPoolExecutor$Worker
|   908 | run                              in     ''
^   662 | run . . . . . . . . . . . . . .  in java.lang.Thread

当然,我检查过了,定义变量的Boostraping工作得很好,如下所示:

代码语言:javascript
复制
def karolzam = new mobilmed.Adres(ulica:"Turkusowa", dom:"8/22", miejscowość:"Lublin", kodPocztowy:"20-572", poczta:"Lublin").save()
        if(karolzam.hasErrors()){
       println karolzam.errors} 

看起来Bootstrap没有“看到”可以在控制台上打印的变量。:/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12140741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档