Freemarker обрезка правых пространств не работает - PullRequest
1 голос
/ 04 апреля 2019

Я буду как можно проще, у меня есть ниже 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 :)?

Ответы [ 2 ]

1 голос
/ 04 апреля 2019

Добавить <# 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 (для правой обрезки): игнорировать все пробелы в этой строке.

Обратите внимание на добавление новых строк между строками, например:

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

-------------------------------------------------------------------------------- 
0 голосов
/ 04 апреля 2019

Вот ответ, я использовал что-то не очень сложное:

<#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, а слева добавил необходимые пробелы таким образом, чтобы все выровнялось правильно.

----- УРОВЕНЬ БОССА НИЖЕ - с использованием функций -----

<#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)}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...