2014-11-24 86 views
1

即時通訊在Grails中是新的,它是一項艱鉅的工作,試圖理解它,而沒有人可以問這類問題。 我有以下問題。這是我的兩個領域類的,我有:PagadoraCalculo過濾器'belongsTo'結果

Pagadora.groovy

class Pagadora { 
    String nombre 
    Boolean activo 
    static hasMany = [calculoIMSS: Calculo, calculoPagado: Calculo, calculoConvenio: Calculo] 
    static mappedBy = [calculoIMSS: 'imss', calculoPagado:'pagadoPor', calculoConvenio:'convenio'] 
} 

布爾變量ACTIVO是指如果 「Pagadora」 將要露面該類視圖的「選擇列表」Calculo

Calculo.groovy

class Calculo { 
    String nombre 
    BigDecimal sueldo 
    static belongsTo = [imss:Pagadora, pagadoPor:Pagadora, convenio:Pagadora] 
} 

我要的是下面,我想在活躍

<g:select id="imss" name="imss.id" from="${Pagadora.Pagadora.list(sort: "nombre", order: "asc")}" optionKey="id" required="" value="${calculoInstance?.imss?.id}" class="many-to-one form-control" noSelection="['':'-Escoja la empresa-']" />  

很抱歉,如果這是一個很難理解我的選擇,只有Pagadoras過濾,但它是一個有點困難,我試圖解釋在英國這樣的事情(我的母語是西班牙語:P)

+0

這實際上並不是你的問題所在,但在GSP中嵌入這樣的代碼並不是一個好主意。更好的做法是在呈現視圖(通常在控制器操作或服務方法中)之前執行查詢,並將結果放入傳遞給視圖的模型中。 – 2014-11-25 05:06:33

回答

1

如果你想獲得的所有現用的項目中,from屬性更改爲:

from="${Pagadora.findAllByActivo(true) [sort: 'nombre', order: 'asc']}" 

這是一個dynamic finder

Jeff在評論中指出,此處的布爾參數可以省略(請參閱findAllBy的示例)。如果你想得到所有不活動的條目,你可以通過命名你的發現者findAllByNotActivo來完成。當你有兩個參數,其中一個是布爾值時,這非常方便。

+0

正是我正在尋找的。非常感謝你的幫助。 – 2014-11-24 18:43:05

+1

而不是'Pagadora.findAllByActivo(true)'你可以縮短到'Pagadora.findAllActivo()'。我在大約4年前爲Grails 1.3.2編寫過其中的一部分。 https://jira.grails.org/browse/GRAILS-6277 – 2014-11-25 05:05:09

+0

@傑夫:謝謝,我是這麼認爲的,但是我在文檔中遇到了問題。 – 2014-11-25 13:59:33