限制FreeMarker中的字符串长度

Bar*_*den 11 html java freemarker jstl

我正试图从FreeMarker中的字符串中获取子字符串.但是有两个方面需要考虑:

  1. 该字符串可以为null
  2. 字符串可以比最大字符串长度短

我做以下事情:

<#list landingpage1.popularItems as row>
    <li>
        <span class="minititle">
            <#assign minititle=(row.title!"")>
            <#if minititle?length &lt; 27>
                ${minititle}
            <#else>
                ${minititle?substring(0,26)} ...
            <#/if>
        </span>
    </li>
</#list>
Run Code Online (Sandbox Code Playgroud)

我收到一条freemarker错误说:

Failed to load templates: Encountered "</#list>" at line 144, column 65 in landingpage1.ftl.
Was expecting one of:
    <ATTEMPT> ...
    <IF> ...
    <LIST> ...
    <FOREACH> ...
    <SWITCH> ...
    <ASSIGN> ...
    <GLOBALASSIGN> ...
    <LOCALASSIGN> ...
    <INCLUDE> ...
    <IMPORT> ...
    <FUNCTION> ...
    <MACRO> ...
    <TRANSFORM> ...
    <VISIT> ...
    <STOP> ...
    <RETURN> ...
    <CALL> ...
    <SETTING> ...
    <COMPRESS> ...
    <COMMENT> ...
    <TERSE_COMMENT> ...
    <NOPARSE> ...
    <END_IF> ...
    <BREAK> ...
    <SIMPLE_RETURN> ...
    <HALT> ...
    <FLUSH> ...
    <TRIM> ...
    <LTRIM> ...
    <RTRIM> ...
    <NOTRIM> ...
    <SIMPLE_NESTED> ...
    <NESTED> ...
    <SIMPLE_RECURSE> ...
    <RECURSE> ...
    <FALLBACK> ...
    <ESCAPE> ...
    <NOESCAPE> ...
    <UNIFIED_CALL> ...
    <WHITESPACE> ...
    <PRINTABLE_CHARS> ...
    <FALSE_ALERT> ...
    "${" ...
    "#{" ...
Run Code Online (Sandbox Code Playgroud)

很奇怪.有人可以帮忙吗?

Bar*_*den 24

经过大量测试后,错误神奇地解决了.必须是业力.

我最后的安全检查代码:

<#assign minititle=(row.title!"")>
<#if minititle?length &lt; 27>
${minititle}
<#else>
${minititle?substring(0,26)} ...
</#if>
Run Code Online (Sandbox Code Playgroud)

希望它能帮助别人


Roc*_*ace 7

我确定你很高兴它现在正在工作,但你收到的错误与你的字符串截断代码无关,这是因为你的</#if>是不正确的.

<#if condition >
    This Is Correct
</#if>


<#if condition >
    This Will Show An Error
<#/if>
Run Code Online (Sandbox Code Playgroud)

  • 你是对的!感谢2年后的跟进! (2认同)