2012-01-05 127 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