Groovy的AntBuilder,省略条件属性,像" setOmitNullAttributes"在MarkupBulder功能 [英] Groovy AntBuilder, omit conditional attributes, like "setOmitNullAttributes" functionality on MarkupBulder

查看:178
本文介绍了Groovy的AntBuilder,省略条件属性,像" setOmitNullAttributes"在MarkupBulder功能的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

样code:

 高清蚂蚁=新AntBuilder()
ant.'antlib:org.jacoco.ant:代理人(
                启用:启用,
                属性:'agentvmparam')

在该已启用参数为空,我想它是在Ant任务转换尚未present,不只是空。 空被评价为true http://ant.apache.org/手动/ develop.html#设定魔法这不是我想要的。

XML构建例如:

 高清XML =新的MarkupBuilder()
xml.omitNullAttributes =真
xml.root(
        RequiredAttribute标签:'要求',
        optionalAttribute:optionalAttribute
        ){}

这是omitNullAttributes将确保optionalAttributeXML元素参数甚至没有present如果Groovy的参数的计算结果为null。

所以我得到

 < RequiredAttribute标签根='需要'/>

而不是

 < RequiredAttribute标签根='需要'optionalAttribute =''/>


解决方案

可能的解决方法的位,但确实这项工作?

 高清蚂蚁=新AntBuilder()
ant.'antlib:org.jacoco.ant:代理([启用:启用,
                                     属性:'agentvmparam'] .findAll {!it.value = NULL})

即:使用的findAll 删除帕拉姆地图的空条目

sample code:

def ant = new AntBuilder()
ant.'antlib:org.jacoco.ant:agent'(
                enabled: enabled,
                property: 'agentvmparam')

When that "enabled" parameter is null, I'd like it to be not present in the ant task conversion, not merely "empty". "empty" gets evaluated to "true" http://ant.apache.org/manual/develop.html#set-magic which isn't what I want.

xml builder example:

def xml = new MarkupBuilder()
xml.omitNullAttributes = true
xml.root(
        requiredAttribute:'required',
        optionalAttribute: optionalAttribute
        ) { }

That "omitNullAttributes" will ensure that the "optionalAttribute" xml element parameter isn't even present if the Groovy parameter evaluates to null.

so I get

<root requiredAttribute='required' />

instead of

<root requiredAttribute='required' optionalAttribute='' />

解决方案

Bit of a possible workaround, but does this work?

def ant = new AntBuilder()
ant.'antlib:org.jacoco.ant:agent'( [ enabled:enabled, 
                                     property:'agentvmparam' ].findAll { it.value != null } )

ie: use a findAll to remove the null entries of the param map

这篇关于Groovy的AntBuilder,省略条件属性,像&QUOT; setOmitNullAttributes&QUOT;在MarkupBulder功能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆