получение доменных имен пользовательских классов доменов в Grails - PullRequest
0 голосов
/ 14 марта 2012

Существует ли способ доступа к метаданным объектов домена только для домена, созданного пользователем (из-за отсутствия лучшего слова), в отличие от объектов домена, которые являются частью, интегрированы в проект с помощью плагинов и т. Д.?

Я получаю имена объектов домена в файле gsp для всех видов операций, связанных с графическим интерфейсом (создание меню и т. Д.)

Так что, если я сделаю что-то вроде этого:

<%
    for( domain in grailsApplication.domainClasses ){
        print ( '<h3>domain class locgial property name: ' + domain.logicalPropertyName + '</h3>' )
        print ( '<h3>domain  full name: ' + domain.fullName + '</h3>' )
    }
%>

... Я могу получить имена, взломать их в JS, чтобы определить, принадлежат ли они моим сгенерированным пакетам (например, com.ra), но это кажется очень хрупким.

1 Ответ

0 голосов
/ 14 марта 2012

К подключаемым классам добавлена ​​аннотация org.codehaus.groovy.grails.plugins.metadata.GrailsPlugin, добавленная компилятором, поэтому вы можете передавать только классы доменов приложения от контроллера к GSP в модели следующим образом:

import org.codehaus.groovy.grails.plugins.metadata.GrailsPlugin

class MyController {

   def myAction = {
      ...
      def appDomainClasses = grailsApplication.domainClasses.findAll {
         !it.clazz.isAnnotationPresent(GrailsPlugin)
      }
      [appDomainClasses: appDomainClasses]
   }
}

изатем переберите их в GSP:

<g:each var='dc' in='${appDomainClasses}'>
<h3>domain class logical property name: ${dc.logicalPropertyName}</h3>
<h3>domain full name: ${dc.fullName}</h3>
</g:each>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...