Grails嵌套g:每个

时间:2017-06-09 19:17:12

标签: grails groovy

我正在尝试遍历索引视图中的字段列表。假设我将以下内容传递给index.gsp:

[SomeDomainList: SomeDomain.list(), fields: ['field1', 'field2', 'field3']]

然后在index.gsp中我有:

<g:each in="SomeDomainList" var="SomeDomainInstance">
    <g:each in="fields" var="field">
        <td>${SomeDomainInstance.field}</td>
    </g:each>
</g:each>

我认为,因为SomeDomainInstance变量被评估,所以也会对字段变量进行求值。但是,我得到了一个&#34;没有这样的属性:类的字段:SomeDomain&#34;。我也尝试过:

<td>${SomeDomainInstance.${field}}</td>

但是这会产生一个&#34;未闭合的GSP表达&#34;错误。谁能告诉我如何实现这一目标呢?

2 个答案:

答案 0 :(得分:0)

尝试在示例中添加双引号:

<td>${SomeDomainInstance."${field}"}</td>

您只需使用条件查询和预测选择您感兴趣的字段:

def domainList = SomeDomain.createCriteria().list {
    projections {
        property('field1')
        property('field2')
        property('field3')
    }
}

[SomeDomainList: domainList]

或者如果您需要列名:

def domainList = SomeDomain.withCriteria{
    resultTransformer(CriteriaSpecification.ALIAS_TO_ENTITY_MAP)
    projections {
        property( 'field1', 'field1')
        property( 'field2', 'field2')
        property( 'field3', 'field3')
    }
}

[SomeDomainList: domainList]

答案 1 :(得分:0)

为什么人们如此喜欢GStrings?一个简单的subscript operator会:

<td>${SomeDomainInstance[ field ]}</td>