2017-06-09 8 views
0

インデックスビューのフィールドのリストをループしようとしています。Grailsは入れ子g:each

[SomeDomainList: SomeDomain.list(), fields: ['field1', 'field2', 'field3']] 

そしてindex.gspに私が持っている:

<g:each in="SomeDomainList" var="SomeDomainInstance"> 
    <g:each in="fields" var="field"> 
     <td>${SomeDomainInstance.field}</td> 
    </g:each> 
</g:each> 

を私はSomeDomainInstance変数ので、フィールド変数はなるだろうと評価されることを思うだろう、私はindex.gspに次を渡すと言うことができます評価される。しかし、私は "いいえそのようなプロパティ:クラスのフィールド:SomeDomain"を取得します。私も試しました:

<td>${SomeDomainInstance.${field}}</td> 

しかし、 "Unclosed GSP expression"エラーが発生します。どのように私はこれを達成することができます誰も教えてくれますか?あなたの例に二重引用符を追加する

+0

をこれも...二重引用符が働いていた...おかげで –

+0

を試してみてください!私は自分自身でそれを試みるとは思わなかった。条件のクエリと予測についての追加のおかげで、それは役に立ちます。 – gabalmat

答えて

0

試してみてください。

<td>${SomeDomainInstance."${field}"}</td> 

あなただけが基準クエリおよび予測を使用することに興味を持っているフィールドを選択することができます。

def domainList = SomeDomain.createCriteria().list { 
    projections { 
     property('field1') 
     property('field2') 
     property('field3') 
    } 
} 

[SomeDomainList: domainList] 

それとも、列を必要とする場合名前:

def domainList = SomeDomain.withCriteria{ 
    resultTransformer(CriteriaSpecification.ALIAS_TO_ENTITY_MAP) 
    projections { 
     property('field1', 'field1') 
     property('field2', 'field2') 
     property('field3', 'field3') 
    } 
} 

[SomeDomainList: domainList] 
+0

どうもありがとうございました私のために働いた '​​$ {SomeDomainInstance [フィールド]}' – gabalmat

+0

正しく覚えていれば、@ Mike-Wが示唆している文字列名を使って関数を実行することもできます。 'domainInstance。$ {stringFunctionName}"() 'の行に沿っています。これはテストの際に役立ちます。 –

0

なぜGStringsが大好きですか?シンプルsubscript operatorはどうなる:

<td>${SomeDomainInstance[ field ]}</td>