gpt4 book ai didi

java - 如何忽略 freemarker 中嵌入列表的换行符/回车符?

转载 作者:太空宇宙 更新时间:2023-11-04 12:30:48 25 4
gpt4 key购买 nike

我有一个正在尝试解决的嵌入式列表问题。第一个列表包含可能具有对象列表的对象。如果父对象已填充列表,我想迭代对象并显示值。由于某种原因,它不断将第二个列表的输出放在单独的行上。我从文档中认为它应该忽略 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 fieldThreefieldOne 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 中检查嵌入列表是否至少有 1 项)。因此,就像输出中第一个“fieldFour”与“filedThree”位于同一行一样,其 ${...}也在模板的同一行中。然后,如果嵌入列表有 ?size大于 1,您可以从索引 1 开始列出“fieldFour”,例如 <#list outsideRecord.embeddedList[1..] as innerRecord> .

关于java - 如何忽略 freemarker 中嵌入列表的换行符/回车符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37858934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com