Kullanıcıların etki alanı sınıflarını geçmesine ve malzeme yığınlarını yazdırmasına izin vermek istiyorum. Benim Frist sorun: gayet aşağıdaki eserlerini varsayarak: Aşağıda söylemeye çalışıyorum neyi yazmak için uygun yolu nedirGrails: alana göre sınıf sınıfı bul
//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]
}
}
olanlar hatları yukarıda hiç çalışmaz. Kullanıcılara herhangi bir alan sınıfını seçme ve bir şeyi "şeyler" ile geri alma olanağı sağlamaya çalışıyorum. Varsayım: tüm alan sınıfları aynı türde bir Stuff alanına sahiptir. Tam paketi biliyorsanız
Ben ikinci yöntemi kullanarak (hatası alıyorum ve className = "Account"): 'java.lang.Class' sınıfına 'org.codehaus.groovy.grails.commons.DefaultGrailsDomainClass' sınıfıyla 'Artefact> Account' nesnesini 'java.lang.ClassNotFoundException' olarak sınıflandıramazsınız: Artefact > Hesap – Mikey
Maalesef, Java sınıfını DomainClass'tan almak için cevabı düzenledim. –
Burt: Sanırım ilk örneğinizin ikinci satırında bir .clazz'ı kaçırdınız (tıpkı ikinci bloğa eklediğiniz gibi). Ne yazık ki [komik adlandırma] (http://grails.org/doc/latest/api/org/codehaus/groovy/grails/commons/AbstractGrailsClass.html#getClazz%28%29) düzenlememin onaylanmasını engelledi :-) – martin