我正在使用grails 2.1.0。我需要在gsp页面的选择框中通过父链显示父域的字段值。但是我出错了。到目前为止,我已经尝试如下:
我的第一个域包含名为adtAuditPack的 parent >>>
class AdtAuditorSchdlPack {
......
static belongsTo = [adtAuditPack: AdtAuditPack,fiscalYear:FiscalYear]
......
}
我的上述域名的第一位 parent 名为AdtAuditPack >>>
class AdtAuditPack {
......
static belongsTo = [auditFirm:AuditFirm]
......
}
我的adtAuditorSchdlPack的第二个父名为AuditFirm >>>
class AuditFirm {
......
String auditFirmName
......
}
现在,我想将auditFirm名称显示为optionValue,将AdtAuditorSchdlPack.id显示为optionKey。为此,我选择以下内容>>>
<g:select id="auditPack0" name="auditPack0" from="${AdtAuditorSchdlPack?.adtAuditPack?.auditFirm}" style="width: 200px;"
optionKey="id" optionValue="auditFirmName" noSelection="['': 'Select One']"
required="" class="form-control"/>
它显示以下工具提示>>
Cannot reference non-static symbol 'adtAuditPack' from static context
谁能帮我这个忙吗?!!!有没有办法做到这一点?
最佳答案
您可以在服务/ Controller 上构造下拉列表,然后通过模式传递给gsp页面并使用。
Controller /服务方法如下所示:
def c = AdtAuditorSchdlPack .createCriteria()
def results = c.list() {
and{
// your criteria logic
}
order('id', 'asc')
}
根据您的逻辑构造列表:
List auditFirmList= new ArrayList()
results.each { AdtAuditorSchdlPack adtAuditPack->
dataReturns.add([id: adtAuditPack?.auditFirm?.id, name: "${adtAuditPack?.auditFirm?.auditFirmName}"])
}
现在,您可以通过模型传递此列表,并按如下所示在下拉菜单中使用。
<g:select class=" form-control" id="auditPack0" name='auditPack0'
noSelection="${['': 'Select one...']}" from="${auditFirmList}" optionKey="id" optionValue="name"></g:select>
optionKey和optionValue在gsp View 页面中可能会标记为红色,但可以在运行时使用。
关于grails - 如何在Grails的选择框中显示父域字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28475340/