18
我想讓用戶遍歷域類並打印出垃圾信息。我弗里斯特問題:假設下面的作品就好了:Grails:按名稱查找域名
//this works
class EasyStuffController{
def quickStuff = {
def findAThing = MyDomainClass.findByStuff(params.stuff)
[foundThing:findAThing]
}
}
什麼寫什麼,我想下面說的正確方法:
//this doesn't
class EasyStuffController{ servletContext ->
def quickStuff = {
def classNameString = "MyDomainClass" //or params.whichOne something like that
def domainHandle = grailsApplication.domainClasses.findByFullName(classNameString)
//no such property findByFullName
def findAThing = domainHandle.findByStuff(params.stuff)
[foundThing:findAThing]
}
}
//this also doesn't
class EasyStuffController{ servletContext ->
def quickStuff = {
def classNameString = "MyDomainClass" //or params.whichOne something like that
def domainHandle
grailsApplication.domainClasses.each{
if(it.fullName==classNameString)domainHandle=it
}
def findAThing = domainHandle.findByStuff(params.stuff)
//No signature of method: org.codehaus.groovy.grails.commons.DefaultGrailsDomainClass.list() is applicable
[foundThing:findAThing]
}
}
這些線以上不工作的。我試圖讓用戶能夠選擇任何領域類,並用「東西」取回事物。假設:所有域類都具有相同類型的Stuff字段。
我的錯誤(使用第二種方法和className =「Account」):無法將類'org.codehaus.groovy.grails.commons.DefaultGrailsDomainClass'的對象'Artefact> Account'強制轉換爲'java.lang.Class'類,原因是:java.lang.ClassNotFoundException:Artefact >賬號 – Mikey 2011-06-14 22:22:50
對不起,我編輯了答案以從DomainClass獲取Java類。 – 2011-06-15 04:49:03
@burt:我相信,你在第一個例子的第二行錯過了一個.clazz(就像你添加到第二個塊)。不幸的是,[有趣的命名](http://grails.org/doc/latest/api/org/codehaus/groovy/grails/commons/AbstractGrailsClass.html#getClazz%28%29)阻止了我的編輯被批准:-) – martin 2012-08-24 11:16:06