如何在grails中的select框中显示父域字段

How to show parent domain field in select box in grails

我正在使用 grails 2.1.0。我需要在 gsp 页面的 select 框中通过父链显示父域的字段值。但我收到错误。到目前为止,我已尝试如下::

我的第一个域,其中包含名为 adtAuditPack 的父域 >>>

    class AdtAuditorSchdlPack {
    ......
    static belongsTo = [adtAuditPack: AdtAuditPack,fiscalYear:FiscalYear]
    ......
}

我的上述域的第一个父域名为 AdtAuditPack >>>

class AdtAuditPack {
    ......
    static belongsTo = [auditFirm:AuditFirm]
    ......
}

我的 adtAuditorSchdlPack 的第二个父级名为 AuditFirm >>>

    class AuditFirm {
    ......
    String auditFirmName
    ......
}

现在我想将 auditFirm 名称显示为 optionValue,将 AdtAuditorSchdlPack.id 显示为 optionKey。为此,我有以下 select 如下 >>>

<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

有人可以帮我解决这个问题吗?!!!有没有办法做到这一点???

在您的控制器上写一个动作,由您想要的 gsp 页面中的 ajax 调用。该操作将在页面加载函数中调用。在您的控制器中编写一个查询,例如您加入 3 域的位置并将其附加到您的 gsp 字段。

看来您必须调整您的 from 属性。它必须包含某种列表。

它应该看起来像这样:

<g:select id="auditPack0" name="auditPack0" from="${AdtAuditorSchdlPack.list()}" style="width: 200px;"
optionKey="adtAuditPack?.auditFirm?.id" optionValue="adtAuditPack?.auditFirm?.auditFirmName" 
noSelection="['': 'Select One']" required="" class="form-control"/>

或者可以直接从您的控制器提供 AuditFirms 列表。

您可以在Service/Controller 上构建下拉列表并通过模态传递给gsp 页面并使用。

controller/service 方法如下所示:

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 视图页面中标记为红色,但会在 运行 上工作。