首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用对象访问属性。“${ property }”

使用对象访问属性。“${ property }”
EN

Stack Overflow用户
提问于 2012-07-13 17:56:12
回答 1查看 1.8K关注 0票数 1

我正在做一些动态过滤,并且有这个:

代码语言:javascript
代码运行次数:0
运行
复制
class Filterable {
    def statusId
    def secondaryFilterable
}
...
def filter = new Filter(validIds: [1], fieldName: 'statusId')
...
class Filter {

    def validIds = [] as Set
    def fieldName
    private boolean containsFieldValue(input) {
        def fieldValue = input."${fieldName}"
        return fieldValue in validIds
    }
}

它只适用于一个属性。但是,现在我需要通过第二个可筛选对象进行过滤-类似于

代码语言:javascript
代码运行次数:0
运行
复制
def filter = new Filter(validIds: [1], fieldName: 'secondaryFilterable.statusId')

这会抛出一个groovy.lang.MissingPropertyException。有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-13 18:16:50

带引号的属性假设一个点是属性名称的一部分。

一个简单的解决方案是:

代码语言:javascript
代码运行次数:0
运行
复制
...
def fieldValue = fieldName.split(/\./).inject(input){ parent, property -> parent?."$property" }
...

这将使用子属性的点标记法递归查找字段值。

Groovy web控制台上的I put up a working example here

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11468189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档