Как сделать повторный вывод в одной строке? - PullRequest
3 голосов
/ 24 февраля 2012

Я хочу сгенерировать некоторый код Java с помощью freemarker, то есть сгенерировать параметры для метода. Скажем, у меня есть метод с именем doIt, которому нужно имя некоторого параметра и имена его классов, я дам шаблону param с именем paramList.Я определяю директиву макроса, повторяю список параметров, но, следовательно, каждый параметр занимает строку.Код моего шаблона выглядит следующим образом:

<#macro paramList plist>
   <#if plist??>
       <#list plist as p>
           ${p.javaType?substring(2)} ${p.name} <#if p_has_next>, </#if>
       </#list>
   </#if>
</#macro>
doIt(<@paramList plist=params/>)

Результат выполнения:

doIt(           int end , 
           String endDate , 
           String evtCode , 
           int evtNo , 
           String giftCode , 
           int start , 
           String startDate 
)

Как сделать так, чтобы все выходные параметры отображались в одной строке.Я знаю, что могу написать логику директив списка в одной строке, чтобы избежать разрыва строки, но если есть и другая логика, через некоторое время она станет слишком длинной для чтения и понимания.Формат, который я хочу:

doIt(int end , String endDate, String evtCode , int evtNo , String giftCode , int start , String startDate)

Ответы [ 2 ]

5 голосов
/ 25 февраля 2012

Поставьте <#t> после самого внутреннего </#if>. (См. http://freemarker.org/docs/ref_directive_t.html#ref.directive.t)

0 голосов
/ 12 марта 2012

Еще один способ сделать это - изменить код следующим образом:

<#macro paramList plist>
   <#if plist??>
        <#list plist as p>${p.javaType?substring(2)} ${p.name} <#if p_has_next>, </#if></#list>
   </#if>
</#macro>
doIt(<@paramList plist=params/>)

То есть сделать список полностью встроенным.Его сложнее читать, но он сохранит ваши пробельные символы, которые вам нужны (то есть пробелы).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...