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>
确定。这可行,但它没有得到任何瞬态属性。我尝试过d.properties和d.persistantProperties,他们似乎给了我相同的结果。在此先感谢您的帮助!!
我需要将其称为getComputeStuff吗?
我现在已经更改了我的域类以包含它,但仍然没有得到瞬态computeStuff
static transients = ['computeStuff']
float getComputeStuff(){
def thisCouldChange = 3.1
return thisCouldChange //it actually does things but not of consequence to my question
}
这似乎没有任何区别。
答案 0 :(得分:2)
删除静态瞬态decleration。按如下方式定义您的方法:
def getComputeStuff(){
def thisCouldChange = 3.1
return 3.1 //it actually does things but not of consequence to my question
}
之后,属性调用“computeStuff”应出现在域类中调用getProperties()的属性列表中。将返回值定义为 def 非常重要。
答案 1 :(得分:0)
我认为,如果您希望将computeStuff
方法视为属性,请将其命名为getComputeStuff
- 将名称约定为JavaBeans。我不确定它会起作用,但我觉得值得一试;)