如何在 freemarker 中忽略带有嵌入列表的行 break/carrige return?
How do I ignore a line break/carrige return with embedded list in freemarker?
我有一个嵌入式列表问题需要解决。第一个列表包含可能具有对象列表的对象。如果父对象填充了列表,我想遍历对象并显示值。出于某种原因,它一直将第二个列表的输出放在单独的一行上。我从文档中认为它应该忽略 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 fieldThree
I 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
两个 ${...}
-s 之后都有一个换行符,因此 "fieldThree" 之后也会有一个换行符。这与文档一致。你可以 <#rt>
那个换行符,但是你必须在内部 #list
的第一次迭代中减少缩进,你还必须确保如果没有 "fieldFour" 那么换行符被添加回来。很难遵循。所以,我认为,更像模板的方法是像打印 "fieldThree" 一样打印嵌入列表的第一项(在 #if
中检查嵌入列表是否至少有一个项目) .所以就像输出中第一个 "fieldFour" 与 "filedThree" 在同一行一样,它的 ${...}
在模板中也在同一行。然后,如果嵌入列表的 ?size
大于 1,您可以从索引 1 开始列出 "fieldFour"-s,例如 <#list outsideRecord.embeddedList[1..] as innerRecord>
.
我有一个嵌入式列表问题需要解决。第一个列表包含可能具有对象列表的对象。如果父对象填充了列表,我想遍历对象并显示值。出于某种原因,它一直将第二个列表的输出放在单独的一行上。我从文档中认为它应该忽略 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
两个 ${...}
-s 之后都有一个换行符,因此 "fieldThree" 之后也会有一个换行符。这与文档一致。你可以 <#rt>
那个换行符,但是你必须在内部 #list
的第一次迭代中减少缩进,你还必须确保如果没有 "fieldFour" 那么换行符被添加回来。很难遵循。所以,我认为,更像模板的方法是像打印 "fieldThree" 一样打印嵌入列表的第一项(在 #if
中检查嵌入列表是否至少有一个项目) .所以就像输出中第一个 "fieldFour" 与 "filedThree" 在同一行一样,它的 ${...}
在模板中也在同一行。然后,如果嵌入列表的 ?size
大于 1,您可以从索引 1 开始列出 "fieldFour"-s,例如 <#list outsideRecord.embeddedList[1..] as innerRecord>
.