如何在 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>.