【问题标题】:Freemarker: strip newlines but do NOT compress whitespace?Freemarker:去除换行符但不压缩空格?
【发布时间】:2015-12-12 06:49:58
【问题描述】:

有没有一种简单的方法可以去除换行符但压缩空格?

<@compress> directive 两者兼而有之,这不是我想要的。

我在这样的循环中有一个部分:

<#list items as item>
 * <#if something>${something?right_pad(10)}<#else>${something_else?right_pad(10)}</#if><#if another_thing>${more_data?right_pad(20)}<#else>${even_more_data?right_pad(20)}</#if>
</#list>

这会导致一些非常长的行,我更喜欢这样做:

<#list items as item>
 * <#if something>
       ${something?right_pad(10)}
   <#else>
       ${something_else?right_pad(10)}
   </#if>
   <#if another_thing>
       ${more_data?right_pad(20)}
   <#else>
       ${even_more_data?right_pad(20)}
   </#if>
</#list>

但似乎没有一种简单的方法可以消除此处为清楚起见给出的间距的歧义,我想使用 right_pad 输出间距。

【问题讨论】:

    标签: java freemarker


    【解决方案1】:

    您至少有两个选择:

    1) 使用注释掉的空格:

    <#list items as item>
     * <#if something><#--
           -->${something?right_pad(10)}<#--
       --><#else><#--
           ${something_else?right_pad(10)}<#--
       --></#if><#--
       --><#if another_thing><#--
           -->${more_data?right_pad(20)}<#--
       --><#else><#--
           -->${even_more_data?right_pad(20)}<#--
       --></#if>
    </#list>
    

    2) 使用 (当前行的左修剪,不带新行符号)或/和 (当前行的右修剪,带新行符号)

    <#list items as item>
     * <#if something><#rt>
           ${something?right_pad(10)}<#lt><#rt>
       <#else><#lt><#rt>
           ${something_else?right_pad(10)}<#lt><#rt>
       </#if><#lt><#rt>
       <#if another_thing><#lt><#rt>
           ${more_data?right_pad(20)}<#lt><#rt>
       <#else><#lt><#rt>
           ${even_more_data?right_pad(20)}<#lt><#rt>
       </#if><#lt>
    </#list>
    

    查看详情:http://freemarker.org/docs/dgui_misc_whitespace.html

    【讨论】:

    • 哎呀! :-( 感谢您向我展示了可行的方法。有更好的 Java 模板库吗?当我遇到这样的事情时,我感到很恶心。我希望 Python 的 jinja2 库有一个 Java 端口。
    猜你喜欢
    • 2012-05-29
    • 2018-06-14
    • 2020-11-04
    • 2014-10-04
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多