我是Grails的新手,正在做我的小项目。我遇到的问题是我的XML读取服务-- ReadService --有一个返回XmlSlurper()的函数read()。函数读取xml文件,就像它使用println在控制台中写入文件一样。但是当我尝试在Bootstrap中打印结果XmlSlurper时,我什么也得不到。
class BootStrap {
def ReadService
def init = {
servletContext ->
def xml = ReadService.read()
println xml
}
}谁能告诉我我哪里做错了?
发布于 2012-08-27 20:27:56
看起来你只是把你的服务拼写错了。您的ReadService必须保存在grails-app/services中。
要使用该服务,您必须像这样声明它们
def readService在init中,您可以按如下方式使用它们:
def xml = readService.read()如你所见,第一个字母必须是小写的。
发布于 2012-08-28 12:59:02
好了,我现在明白了问题不在于读取xml本身,而在于使用它进行引导,因为将服务名称更改为lovercase会有所帮助。我使用ReaderService读取带有addresses的xml文件并构建address对象。下面是我的Bootstrap代码:
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}
}
}当我运行它时,我得到了典型的“没有这样的属性”错误。
| 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工作得很好,如下所示:
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没有“看到”可以在控制台上打印的变量。:/
https://stackoverflow.com/questions/12140741
复制相似问题