我有一个我想解决的嵌入式列表问题。第一个列表包含可能包含对象列表的对象。如果父对象填充了列表,我想迭代对象并显示值。由于某种原因,它继续将第二个列表的输出放在一个单独的行上。我从文档中想到它应该忽略LIST或IF指令的换行符。下面是一个示例和我得到的输出。
<#list outsideRecordList as outsideRecord>
${(outsideRecord.fieldOne!"")?right_pad(9)} ${(outsideRecord.fieldTwo)?trim} ${(outsideRecord.fieldThree)?trim}
<#if (outsideRecord.embeddedList)?has_content>
<#list outsideRecord.embeddedList as innerRecord>
<#if innerRecord.status == 'X'>
<#lt>${""?right_pad(30)}${(innerRecord.fieldFour!"")}
</#if>
</#list>
</#if>
我得到了什么:
fieldOne fieldTwo fieldThree fieldFour fieldFour fieldFour
fieldOne fieldTwo fieldThree fieldOne fieldTwo fieldThreeI would like first fieldFour to be on the same line as the other fields and then any other fields to be on next line indented at the same posistion.
What I want: fieldOne fieldTwo fieldThree fieldFour fieldFour fieldFour fieldOne fieldTwo fieldThree fieldOne fieldTwo fieldThree
答案 0 :(得分:0)
在${...}
- s之后你有一个换行符,所以在“fieldThree”之后会有一个换行符。这与文档一致。你可以<#rt>
换行,但是你必须在内部#list
的第一次迭代中减少缩进,你还必须确保如果没有“fieldFour”那么行 - 休息加回来。很难遵循。因此,我认为,更多模板方法是打印嵌入式列表的第一项,就像打印“fieldThree”一样(在#if
内部检查嵌入式列表是否至少有1个项目)。因此,就像第一个“fieldFour”与输出中的“filedThree”在同一行中一样,它的${...}
也在模板的同一行中。然后,如果嵌入列表的?size
大于1,则可以从索引1开始列出“fieldFour”-s,如<#list outsideRecord.embeddedList[1..] as innerRecord>
。