Freemarker 修剪正确的空间不起作用

Freemarker trimming right spaces not working

我会尽量简单,我有下面的template.ftl

B E G L E I T Z E T T E L                                                 Intern
FUER DATEI:                                                  ${content.fileName}
-------------------------------------------------------------------------------- 
BELEGLOSER DATENTRAEGERAUSTAUSCH
ERZ. SYSTEM:                                                   ${content.system}
INITIATOR:                                                  ${content.initiator}
DATEI ID:                                                      ${content.fileID}

我想输出 :

B E G L E I T Z E T T E L                                                 Intern
FUER DATEI:                                                             FileName
--------------------------------------------------------------------------------
BELEGLOSER DATENTRAEGERAUSTAUSCH
ERZ. SYSTEM:                                                             SYSTEMX
INITIATOR:                                                             Initiator
DATEI ID:                                                                 FileID

但我得到的是 ...假设上面的例子是:

B E G L E I T Z E T T E L                                                 Intern
FUER DATEI:                                                            FileName
--------------------------------------------------------------------------------
BELEGLOSER DATENTRAEGERAUSTAUSCH
ERZ. SYSTEM:                                                       SYSTEMX
INITIATOR:                                                             Initiator
DATEI ID:                                                              FileID

换句话说,列没有正确对齐

我如何解决 FreeMarker 中的这个问题:)?

添加 <#rt> 用于修剪右边的空格

B E G L E I T Z E T T E L                                                 Intern
FUER DATEI:                                                  ${content.fileName}<#rt>
-------------------------------------------------------------------------------- 
BELEGLOSER DATENTRAEGERAUSTAUSCH
ERZ. SYSTEM:                                                   ${content.system}<#rt>
INITIATOR:                                                  ${content.initiator}<#rt>
DATEI ID:                                                      ${content.fileID}<#rt>

rt (for right trim): Ignore all trailing white-space in this line.

注意行与行之间要加新行,例如:

B E G L E I T Z E T T E L                                                 Intern
FUER DATEI:                                                               ${content.fileName}<#rt>

-------------------------------------------------------------------------------- 

这是答案,我使用了一些不是很复杂的东西:

<#assign lineWidth = 80>
B E G L E I T Z E T T E L                                                 Intern
<#compress>FUER DATEI:                                                          </#compress>${content.fileName?left_pad(lineWidth-"FUER DATEI:"?length," ")}
--------------------------------------------------------------------------------
BELEGLOSER DATENTRAEGERAUSTAUSCH
<#compress>ERZ. SYSTEM:                                                         </#compress>${content.system?left_pad(lineWidth-"ERZ. SYSTEM:"?length," ")}
<#compress>INITIATOR:                                                           </#compress>${content.initiator?left_pad(lineWidth-"INITIATOR:"?length," ")}
<#compress>DATEI ID:                                                            </#compress>${content.fileID?left_pad(lineWidth-"DATEI ID:"?length," ")}

所以让我们来看看前 3 行代码:

<#assign lineWidth = 80>
B E G L E I T Z E T T E L                                                 Intern
<#compress>FUER DATEI:                                                          </#compress>${content.fileName?left_pad(lineWidth-"FUER DATEI:"?length," ")}

1. 首先我分配一个变量lineWidth代表文件的最大行宽

2. 然后对于每一行,我使用 <#compress>

吃掉所有空格

3. 然后我添加了 value 并在左侧添加了所需的空间,使所有内容都对齐。

----- BOSS 级别低于 - 使用函数 -----

<#assign lineWidth = 80>

<#function createLine prefix value >
    <#return prefix + value?left_pad(lineWidth - prefix?length," ")>
</#function>

B E G L E I T Z E T T E L                                                 Intern
${createLine("FUER DATEI:",content.fileName)}
--------------------------------------------------------------------------------
BELEGLOSER DATENTRAEGERAUSTAUSCH
${createLine("ERZ. SYSTEM:",content.system)}
${createLine("INITIATOR:",content.initiator)}
${createLine("DATEI ID:",content.fileID)}
${createLine("SAMMELREFERENZ ID:",content.referenceID)}
${createLine("RSTELLUNGSDATUM:",content.creationDate)}