Grails 使用带有内联列表约束和动态查找器的动态脚手架

Grails 使用带有内联列表约束和动态查找器的动态脚手架,grails,dns,constraints,scaffolding,Grails,Dns,Constraints,Scaffolding,Grails2.0.4-使用带有inlist约束和动态查找器的动态脚手架 我试图在域对象的inList约束中使用动态查找器。 如果我在应用程序处于活动状态时通过运行app将约束更改为sample 2=Aidy.findAll()*。代码,它可以从引导的示例数据创建对象窗体上的下拉列表。 但是,随后使用grails run app引导应用程序失败,并出现MissingMethodException //1- aidyear(blank:false, maxSize:4, inList:{ [] &

Grails2.0.4-使用带有inlist约束和动态查找器的动态脚手架

我试图在域对象的inList约束中使用动态查找器。 如果我在应用程序处于活动状态时通过运行app将约束更改为sample 2=Aidy.findAll()*。代码,它可以从引导的示例数据创建对象窗体上的下拉列表。 但是,随后使用grails run app引导应用程序失败,并出现MissingMethodException

//1- aidyear(blank:false, maxSize:4, inList:{ [] << '0203' << '0304' << '0405' << '0506'}())
//2- aidyear(blank:false, maxSize:4, inList:{ Aidy.findAll()*.code}())
我有一个简单的示例项目: 但它只是以下两个域对象,一个控制器和一个bootstrap.groovy

package edu.uvm
class Aidy {
    String code
    String desc
    Date startDate
    Date endDate
    String statusInd

    static constraints = {
        code(unique:true,blank:false, maxSize:4)
        desc(blank:false, maxSize:30)
        startDate(blank:false)
        endDate(blank:false)
        statusInd(blank:false, inList:["A","I"])
    }

}

package edu.uvm
class TreqMap {
        String aidyear
        String treq
        Integer seqno

        static constraints = {
            aidyear(blank:false, maxSize:4, inList:{ [] << '0203' << '0304' << '0405' << '0506'}())
            //aidyear(blank:false, maxSize:4, inList:{ Aidy.findAll()*.code}())
            treq(blank:false, maxSize:6, inList:["BNOTE","SCERT","PERKIN","PNOTE","LNOTE","SNOTE"])
            seqno(blank:true, range:0..99)
       }
}

package edu.uvm
class TreqMapController {
    def scaffold = edu.uvm.TreqMap
}

import edu.uvm.Aidy
class BootStrap {

    def init = { servletContext ->
        new Aidy(code:'0910', desc:'July 2009 - June 2010', startDate:'07/01/2009', endDate:'06/30/2010', statusInd:'A').save(failOnError:true)
        new Aidy(code:'1011', desc:'July 2010 - June 2011', startDate:'07/01/2010', endDate:'06/30/2011', statusInd:'A').save(failOnError:true)
        new Aidy(code:'1112', desc:'July 2011 - June 2012', startDate:'07/01/2011', endDate:'06/30/2012', statusInd:'A').save(flush:true,failOnError:true)
        println "Loaded " + Aidy.count() + " Aid Years"
    }
    def destroy = {
    }
}
包edu.uvm
艾迪班{
字符串代码
字符串描述
起始日期
日期结束日期
字符串状态标识
静态约束={
代码(唯一:true,空白:false,最大大小:4)
描述(空白:假,最大尺寸:30)
起始日期(空白:false)
endDate(空白:false)
statusInd(空白:false,输入:[“A”,“I”])
}
}
包edu.uvm
类TreqMap{
每年
字符串treq
整数序号
静态约束={
aidyear(空白:false,最大大小:4,内列表:{[]
package edu.uvm
class Aidy {
    String code
    String desc
    Date startDate
    Date endDate
    String statusInd

    static constraints = {
        code(unique:true,blank:false, maxSize:4)
        desc(blank:false, maxSize:30)
        startDate(blank:false)
        endDate(blank:false)
        statusInd(blank:false, inList:["A","I"])
    }

}

package edu.uvm
class TreqMap {
        String aidyear
        String treq
        Integer seqno

        static constraints = {
            aidyear(blank:false, maxSize:4, inList:{ [] << '0203' << '0304' << '0405' << '0506'}())
            //aidyear(blank:false, maxSize:4, inList:{ Aidy.findAll()*.code}())
            treq(blank:false, maxSize:6, inList:["BNOTE","SCERT","PERKIN","PNOTE","LNOTE","SNOTE"])
            seqno(blank:true, range:0..99)
       }
}

package edu.uvm
class TreqMapController {
    def scaffold = edu.uvm.TreqMap
}

import edu.uvm.Aidy
class BootStrap {

    def init = { servletContext ->
        new Aidy(code:'0910', desc:'July 2009 - June 2010', startDate:'07/01/2009', endDate:'06/30/2010', statusInd:'A').save(failOnError:true)
        new Aidy(code:'1011', desc:'July 2010 - June 2011', startDate:'07/01/2010', endDate:'06/30/2011', statusInd:'A').save(failOnError:true)
        new Aidy(code:'1112', desc:'July 2011 - June 2012', startDate:'07/01/2011', endDate:'06/30/2012', statusInd:'A').save(flush:true,failOnError:true)
        println "Loaded " + Aidy.count() + " Aid Years"
    }
    def destroy = {
    }
}