2012-10-26 66 views
1

我想填充grails選擇一些從SQL返回的行,但由於某種原因,它不工作。我有以下代碼:麻煩填充SQL語句的Grails選擇框

控制器:

import groovy.sql.Sql 

class ClinicalRequirementsController { 

static allowedMethods = [save: "POST", update: "POST", delete: "POST"] 

def dataSource //injection of dataSource 

def create() { 

    def db = new Sql(dataSource) 

    def terms = db.rows("""SELECT stvterm_code 
    FROM stvterm 
    WHERE stvterm_fa_proc_yr = (SELECT stvterm_fa_proc_yr 
    FROM stvterm, current_term 
    WHERE stvterm_code = current_term.cur_term) 
    ORDER BY stvterm_code ASC""") 

    [terms: terms] 

    db.close() 

    [clinicalRequirementsInstance: new ClinicalRequirements(params)] 
    } 
} 

GSP選擇:

<g:select name="insuranceSemesterVerified" from="${terms}" required="" value="${clinicalRequirementsInstance?.insuranceSemesterVerified}" valueMessagePrefix="clinicalRequirements.insuranceSemesterVerified"/> 

我很爲難。希望有人能指出我錯在哪裏。我已經在別處對數據庫進行了查詢驗證。

回答

0

控制器只返回(除非你把return聲明中的某個地方)的最後一行,所以你的最後一行改成這樣:

[clinicalRequirementsInstance: new ClinicalRequirements(params), terms: terms] 
+0

謝謝!那就是訣竅。能夠在我的其他gsps中重用該代碼而不必將代碼放入每個單獨控制器的最佳方式是什麼? – user1587687

+0

爲此,我通常會創建一個自定義taglib並讓該taglib呈現g:select - 您的調用將類似於: – Kelly

+0

對不起 - 最後一條評論被切斷:爲了做這樣的事情,我通常創建一個自定義taglib, taglib呈現'g:select'。或者你可以創建一個返回列表的服務方法;那麼你會將你的服務連接到任何需要該列表的gsp(參見問題2510929)。你的選擇會有一個'from'像; 'from =「$ {myService.listTerms()}」' – Kelly