2010-11-19 12 views

答えて

10

あなたはグラムのoptionValueに使用することができ、あなたのドメインクラス、過渡特性を紹介することができます:選択:

class Book { 
    String name 
    String author 

    static transients = [ 'nameAndAuthor' ] 

    public String getNameAndAuthor() { 
     return "$name, $author" 
    } 
} 

あなたのグラム:次のように選択します。

<g:select name="id" from="${Books.list()}" optionKey="id" value="" 
    optionValue="nameAndAuthor" 
    noSelection="${['null':'Select Publisher...']}" /> 
+0

thanksDaniel Engmann – Honey

38

あなたのドメインクラスを変更したくない場合は、あなたのオプション値のためにクロージャを渡すことができます。

<g:select name="id" from="${Books.list()}" optionKey="id" 
      value="" optionValue="${{it.name +' '+it.author}}" 
      noSelection="${['null':'Select Publisher...']}"/> 
+0

これはすばらしいことですが、私のIDE(IntelliJ)はこれをあいまいなコードブロックエラーとしてマークしています。誰かがこの周りを持っていますか? – RasTheDestroyer

+0

私はいつもそれを実行することができます忘れる!ありがとう! = D – ricardogobbo

5

またはあなたBookクラスに

public String toString() { 
"${name} ${author}" 
} 

をToStringメソッドを追加した後だけoptionValueを省略

<g:select name="id" from="${Books.list()}" optionKey="id" 
      value="" noSelection="${['null':'Select Publisher...']}"/> 

あなたのデバッガでドメインを見ると、それは人間が認識できる値でした。

これが役に立ちます。

関連する問題