我们可以在g中有多个字段:select optionValue?

时间:2010-11-19 05:59:45

标签: grails

有没有办法在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...']}"/>

3 个答案:

答案 0 :(得分:39)

如果您不想修改域类,可以为您的选项值传递一个闭包:

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

答案 1 :(得分:10)

您可以在域类中引入一个瞬态属性,您可以在g的selectValue中使用:select:

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...']}" />

答案 2 :(得分:5)

或者将toString方法添加到Book类

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

然后省略optionValue

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

Atleast然后当你在调试器中查看域时,它具有人类可识别的值。

希望这有帮助。