2011-09-28 115 views
2

我正在尝试调试Grails应用程序。不幸的是,我没有以前的语言经验。GRAILS:groovy.lang.MissingPropertyException:没有这样的属性。

当我做Grails的生成,所有org.example.Book,我得到一个模糊的错误:

Generating controller for domain class org.example.Book ... 
groovy.lang.MissingPropertyException: No such property: Event for class: SimpleTemplateScript6 
    at SimpleTemplateScript6.run(SimpleTemplateScript6.groovy:22) 
    at _GrailsGenerate_groovy.generateForDomainClass(_GrailsGenerate_groovy:88) 
    at _GrailsGenerate_groovy$_run_closure1.doCall(_GrailsGenerate_groovy:48) 
    at GenerateAll$_run_closure1.doCall(GenerateAll.groovy:42) 
    at gant.Gant$_dispatch_closure5.doCall(Gant.groovy:381) 
    at gant.Gant$_dispatch_closure7.doCall(Gant.groovy:415) 
    at gant.Gant$_dispatch_closure7.doCall(Gant.groovy) 
    at gant.Gant.withBuildListeners(Gant.groovy:427) 
    at gant.Gant.this$2$withBuildListeners(Gant.groovy) 
    at gant.Gant$this$2$withBuildListeners.callCurrent(Unknown Source) 
    at gant.Gant.dispatch(Gant.groovy:415) 
    at gant.Gant.this$2$dispatch(Gant.groovy) 
    at gant.Gant.invokeMethod(Gant.groovy) 
    at gant.Gant.executeTargets(Gant.groovy:590) 
    at gant.Gant.executeTargets(Gant.groovy:589) 
Error running generate-all: No such property: Event for class: SimpleTemplateScript6 

看产生org.example.BookController.groovy源之后,我注意到,它不是完全生成(停止在列表字段= []):

package org.example 

// import needed for export plugin 
import org.codehaus.groovy.grails.commons.ConfigurationHolder 

class BookController { 

    ... 
    def exportService 

    def export = {attrs -> 
    def response = attrs.response 
    List fields = [] 

此错误出现通过在模板/脚手架/ Controller.groovy以下代码引起:

<%=packageName ? "package ${packageName}\n\n" : ''%> 

// import needed for export plugin 
import org.codehaus.groovy.grails.commons.ConfigurationHolder 

class ${className}Controller { 

    static allowedMethods = [save: "POST", update: "POST", delete: "POST"]^M 

    def exportService 

    ... 

    def export = {attrs -> 
    def response = attrs.response 
    List fields = [] 
    <% excludedProps = Event.allEvents.toList() << 'version' 
     allowedNames = domainClass.persistentProperties*.name << 'id' << 'dateCreated' << 'lastUpdated' 
     props = domainClass.properties.findAll { allowedNames.contains(it.name) && !excludedProps.contains(it.name) && !Collection.isAssignableFrom(it.type) } 
     Collections.sort(props, comparator.constructors[0].newInstance([domainClass] as Object[])) 
     props.eachWithIndex {p, i -> %>fields.push("${p.name}"<%="\n"%><% } %> 
     Map labels = [:] 
     <% props.eachWithIndex { p, i -> %>labels.putAt("\${p.name}", "\${p.naturalName}")<%="\n "%><% } %> 

     Map formatters = [:] 
     Map parameters = [:] 
     response.setHeader("Content-disposition", "attachment; filename=${domainClass.propertyName}s.\${attrs.extension}") 
     if("\${attrs.extension}" == "xml") { 
      exportService.export(attrs.format, response.outputStream, attrs.exportList, fields, [:], formatters, parameters) 
     } else { 
      exportService.export(attrs.format, response.outputStream, attrs.exportList, fields, labels, formatters, parameters) 
     } 
    } 
... 
} 

看来,def导出{}块似乎是造成问题。上面的代码有问题吗?

回答

2

什么是Event类?它有一个导入吗?

+0

你说得对!我查了一下,结果发现我需要在Controller.groovy的顶部包含以下行: <%import grails.persistence.Event%> –

0

检查您的域类是否有语法错误。确保在你的域类中,你已经包含了必要的包,在你的情况下,包org.example。

相关问题