Grails domainClasses получают временные свойства - PullRequest
1 голос
/ 17 июня 2011

Класс GrailsDomainClass имеет два метода: getProperties и getPersistentProperties

У меня есть класс домена (MyDomainClass), который включает это:

static transients = {computeStuff}
float computeStuff(){
  def thisCouldChange = 3.1
  return thisCouldChange  //it actually does things but not of consequence to my question
}

Хорошо, я взялиндексную страницу по умолчанию и изменил ее, чтобы перечислить все свойства MyDomainClass следующим образом:

<g:each var="d" in="${grailsApplication.domainClasses.sort { it.fullName } }">
<h2>${d.fullName}</h2>
<g:each var="f" in="${d.properties.sort { it.fieldName } }">
<br>${f.fieldName }
</g:each>
</g:each>

Ok.Это работает, но не получает никаких переходных свойств.Я пробовал d.properties и d.persistantProperties, и они, похоже, дают мне те же результаты.Заранее спасибо за вашу помощь!1017 *

static transients = ['computeStuff']
float getComputeStuff(){
  def thisCouldChange = 3.1
  return thisCouldChange  //it actually does things but not of consequence to my question
}

Кажется, что это ничего не изменило.

Ответы [ 2 ]

2 голосов
/ 17 июня 2011

убрать статическое переходное замедление.определите ваш метод следующим образом:

def getComputeStuff(){
  def thisCouldChange = 3.1
  return 3.1  //it actually does things but not of consequence to my question
}

после этого в вашем списке свойств должен появиться вызов свойства "computeStuff" с вызовом getProperties () для класса домена.очень важно, чтобы вы определяли возвращаемое значение как def .

0 голосов
/ 17 июня 2011

Я думаю, что если вы хотите, чтобы ваш computeStuff метод обрабатывался как свойство, назовите его getComputeStuff - соглашение об именах как JavaBeans. Я не уверен, что это сработает, но стоит попробовать;)

...