grails – 在Groovy / GSP中进行Duck打字的安全操作符
发布时间:2020-12-14 16:23:15 所属栏目:大数据 来源:网络整理
导读:我是Grails开发的新手,我想知道处理这个问题的标准方法是: 在GSP中,我正在迭代一个域对象列表,很多但不是所有域对象都有getX()方法.我想要一个看起来像这样的标签: g:each in="${myObjects} ${it.x}/g:each 但是,由于我的某些对象没有getX方法,因此我收到
我是Grails开发的新手,我想知道处理这个问题的标准方法是:
在GSP中,我正在迭代一个域对象列表,很多但不是所有域对象都有getX()方法.我想要一个看起来像这样的标签: <g:each in="${myObjects}> ${it.x} </g:each> 但是,由于我的某些对象没有getX方法,因此我收到了“No such property”异常.如果有某种类似“安全运算符”的运算符阻止NPE,我希望如此.没有做’instanceof’有没有好办法处理这个问题? 解决方法
我担心Groovy的经营者不会在这里帮助你.如果您要调用方法的引用可以为null,则
safe navigation operator (
?. )将帮助您;如果你的x属性是所有对象的属性,Elvis operator (?: )会帮助你,除了它们中的一些它可能是null(类似it.x?:’no x here’).
在这种情况下 – 我假设您正在处理不同类的对象的集合,其中一些没有x属性 – 您可以询问该对象是否具有属性x(请注意,如果对象实现了方法名为getX,然后it.hasProperty(‘x’)将为true): <g:each in="${myObjects}> ${it.hasProperty('x') ? it.x : 'no x here'} </g:each> 将“no x here”位替换为您的后备值.此外,如果两个选项的逻辑比简单表达式更复杂,您可以考虑使用 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |