【问题标题】:How do I ignore a line break/carrige return with embedded list in freemarker?如何在freemarker中忽略带有嵌入式列表的换行符/回车符?
【发布时间】:2016-06-16 12:15:02
【问题描述】:

我有一个正在尝试解决的嵌入式列表问题。第一个列表包含可能具有对象列表的对象。如果父对象填充了列表,我想遍历对象并显示值。由于某种原因,它一直将第二个列表的输出放在单独的行上。我从文档中认为它应该忽略 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 与其他字段在同一行,然后任何其他字段在下一行缩进相同的位置。

我想要的: 场一场二场三场四场 领域四 领域四 场一场二场三 fieldOne fieldTwo fieldThree

【问题讨论】:

    标签: java freemarker line-breaks carriage-return


    【解决方案1】:

    ${...}-s 后面都有一个换行符,所以在“fieldThree”之后会有一个换行符。这与文档一致。你可以&lt;#rt&gt; 换行,但是你必须在内部#list 的第一次迭代中减少缩进,你还必须确保如果没有“fieldFour”那么换行符被添加回来.很难跟上。所以,我认为,更模板化的方法是打印嵌入列表的第一项,就像打印“fieldThree”一样(在检查嵌入列表是否至少有一项的#if 内)。所以就像输出中的第一个“fieldFour”与“filedThree”在同一行一样,它的${...}也在模板中的同一行。然后,如果嵌入列表的 ?size 大于 1,则可以列出从索引 1 开始的“fieldFour”-s,如 &lt;#list outsideRecord.embeddedList[1..] as innerRecord&gt;

    【讨论】:

    • 感谢这帮了大忙!
    猜你喜欢
    • 2017-06-03
    • 1970-01-01
    • 2013-07-26
    • 2012-04-16
    • 2015-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多