0

我有一个模板,它在不同的地方使用相同的多值属性。我经常发现自己处于这样一种情况,即我想在将模板应用于各个值之前过滤属性。

我可以做这个:

<#col:{c|<if(cond)><# c.Attribute2 #><endif>};separator=\",\"#>

但这不是我想要的,因为输出中有分隔“跳过”条目的分隔符,例如:

2,4,,,6,,4,5,,

我可以将其修改为

<#col:{c|<if(c.Attribute1)><# c.Attribute2 #>,<endif>};separator=\"\"#>

这几乎没问题,但我在最后一个数字之后得到了一个额外的分隔符,这有时并不重要(通常当分隔符是空格时),但有时会:

2,4,6,4,5,

我有时最终会这样做:

<#first(col):{c|<if(cond)><# c.Attribute2 #><endif>};separator=\"\"#>
<#rest(col):{c|<if(cond)>,<# c.Attribute2 #><endif>};separator=\"\"#>

但是如果第一个成员不满足条件,这种方法就失败了,那么开头就有一个额外的分隔符:

,2,4,6,4,5

有人可以给我一个更好的解决方案吗?

4

2 回答 2

1

首先,让我指出我认为您正在尝试在模板中执行逻辑。每当您听到诸如“根据数据根据某些条件过滤我的列表”之类的东西时,可能是时候在模型中计算过滤后的列表然后将其推入。也就是说,在我们首先过滤列表的情况下,这样的事情可能会起作用:

<col:{c | <if(c.cond)>c<endif>}:{c2 | <c2.c.attribute>}>

c2.c 从第一个应用程序访问 c 参数

于 2012-12-15T23:31:06.010 回答
0

“The ANTLR Guy”的回答对我没有帮助,我找到了另一种解决方法。请参阅在 ST4 中过滤掉空字符串

于 2017-08-21T13:17:21.597 回答