2012-01-05 55 views
1

我正在尝试做一些非常简单的事情,那显然不是那么简单。我有一个域类:Grails select将不会显示嵌套类的字符串

class Regex { 
    String name 
    String Regex 
} 

和其他类:

class RegexRef { 
    int sequenceNumber 
    Product product 
    Regex regex 
} 

现在,在一个选择,我想列出RegexRef情况下,用正则表达式作为optionValue这样的名称:

<g:select name="regexRef.id" from="${com.mycompany.RegexRef.list()}" optionKey="id" size="5" optionValue="regex.name" value="${actionRefInstance?.regexRef?.id}" /> 

但这不起作用。它抛出: 异常消息:没有这样的属性:regex.name类:com.jetheaddev.RegexRef

我可以做其他构造这个错误方向...

<g:link controller="regexRef" action="show" id="${actionRefInstance?.regexRef?.id}">${actionRefInstance?.regexRef?.regex.name.encodeAsHTML()}</g:link> 

,它工作正常。

回答

2

随着optionValue="regex.name"<g:select/>试图检索为RegexRef的财产:

regexRefInstance."regex.name" 

要检索的Regex类中的name属性做:

<g:select optionValue="${{it.regex.name}}"/> 

将上运行optionValue Closure列表中的每个条目并检索相关的name属性。

+0

谢谢,这正是我需要的。在哪里可以找到它的变量,我假设它是选择列表条目的占位符对象? – Therealstubot 2012-01-05 22:21:01

+1

我不确定这是否是您要求的内容,但是在[g:select](http://grails.org/doc/latest/ref/Tags/select.html)的文档中,'optionKey 'description说明它是bean上的一个属性,它是'.list()'的单个实体。在示例中还有一个显示我给你的'optionValue''Closure'答案。 – schmolly159 2012-01-06 14:28:34