1

クラス GrailsDomainClass には 2 つのメソッドが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 を試しましたが、同じ結果が得られるようです。よろしくお願いします。

getComputeStuff などと呼ぶ必要がありますか?

これを含むようにドメイン クラスを変更しましたが、まだ一時的な computeStuff が返されません

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

これは違いがないようです。

4

2 に答える 2

2

静的な一時的な宣言を削除します。メソッドを次のように定義します。

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

その後、プロパティ コール「computeStuff」がプロパティ リストに表示され、ドメイン クラスで getProperties() を呼び出します。戻り値をdefとして定義することが非常に重要です。

于 2011-06-17T06:39:20.047 に答える
0

computeStuffメソッドをプロパティのように扱いたい場合は、それを呼び出すと思いますgetComputeStuff-命名規則はJavaBeansです。うまくいくかどうかはわかりませんが、試してみる価値はあると思います;)

于 2011-06-16T23:33:30.060 に答える