我的目标是能够在我的各种域类中重用一些代码,最终最终在我的gsps中填充各种列表框。我有一项服务,但很少运气插入。这是我的代码。
PopulateListBox服务:
import org.codehaus.groovy.grails.commons.ApplicationHolder as AH
import groovy.sql.Sql
class PopulateListBox {
def dataSource = AH.application.mainContext.dataSource
def sql
def getStates(){
sql = new Sql(dataSource)
def states = []
sql.eachRow("SELECT stvstat_desc FROM stvstat ORDER BY stvstat_desc"){
states.add(it.stvstat_desc)
}
sql.close()
[states:states]
}
}
在我的一个域类中,我尝试在约束块中使用它,如下所示:
def PopulateListBox
static constraints = {
nursingLicenseState(blank:false, inList:PopulateListBox.getStates())
}
但这似乎不起作用。如何引用我的服务,仍然可以在我的视图中从域类访问它?
答案 0 :(得分:1)
一些事情:
transient
。因此应该创建您的服务(Grails通常会默认添加):
class PopulateListBoxService {
...
}
然后您的域对象应该类似于:
class MyDomainObject {
def populateListBoxService
...
static transients=['populateListBoxService']
...
}
让我知道它是否有效。