Похоже, с Grails 3, метод getArtefact не работает, если вы не указали имя класса с пакетом

у позволить пользователям просматривать доменные классы и распечатывать дампы вещей. Моя проблема: предположить, что следующее работает просто отлично:

//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 одного типа.

Ответы на вопрос(1)

Ваш ответ на вопрос