2010-11-19 59 views
12

有没有办法在optionValue中显示多个字段名?我们可以在g中有多个字段:select optionValue?

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

EXPE:

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

回答

10

你可以介绍你的域类,你可以在G的optionValue使用瞬态特性:选择:

class Book { 
    String name 
    String author 

    static transients = [ 'nameAndAuthor' ] 

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

你的G:选择看起来像然后:

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

thanksDaniel Engmann – Honey 2010-11-19 12:55:02

38

您可以通过封闭你的期权价值,如果你不希望修改域类:

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

这很好用,但我的IDE(IntelliJ)将此标记为模糊代码块错误。有没有人知道这个? – RasTheDestroyer 2012-11-28 00:30:13

+0

我总是忘记我该怎么做!谢谢! = d – ricardogobbo 2017-02-22 19:36:25

5

或者添加一个toString方法Book类

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

然后就省略optionValue

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

至少当您在调试器中查看域时,它具有人类可识别的值。

希望这会有所帮助。

相关问题