2012-11-10 2 views
0

여러 위치에서 동일한 다중 값 특성을 사용하는 템플릿이 있습니다. 템플릿이 개별 값에 적용되기 전에 속성을 필터링하고 싶은 경우가 종종 있습니다.StringTemplate의 다중 값 특성 필터링

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

을하지만 다음과 같은 "생략"항목 분리 출력의 구분이 있기 때문에 내가 원하는되지 않습니다 : :

나는이 작업을 수행 할 수 있습니다

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

거의 OK입니다

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

에 수정할 수 있지만 나는 additio를 얻을 수 (분리 공백 보통 때),하지만 때로는 않습니다 때로는 문제가되지 않습니다 마지막 번호, 후 최종 구분 :

2,4,6,4,5, 가끔 일을 끝낼

:

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

그러나 제 1 부재의 조건을 만족하지 않을 경우이 방법이 실패 후 초기의 추가 분리가 :

은 2,4,6,4,5

누군가 나에게 더 나은 해결책을 줄 수 있습니까?

+0

이 v3입니까? 흠 ... 아마 v3에서 "빈"반복 값을 버리지 않았을 것입니다. –

+0

.NET 용 버전 4.0.6.9004를 사용하고 있습니다. –

답변

1

먼저, 템플릿 내에서 로직을 수행하려고한다고 생각합니다. "데이터를 기반으로하는 일부 조건에 따라 내 목록을 필터링"과 같은 내용을들을 때마다 모델에서 필터링 된 목록을 계산하고 입력해야 할 때가 있습니다. 이렇게하면 먼저 목록을 필터링 할 때 작동 할 수 있습니다 :

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

c2.c 내 경우에는 도움이되지 않았다는 "ANTLR 가이"에 의해 첫 번째 응용 프로그램