0

私はapacheofbiz開発本から次のコードを持っています:

<#macro displayData data>
  <#if data?is_sequence>
    <#assign keys = data?first?keys/>
  <#else>
    <#assign keys = data?keys/>
</#if>
  <#-- Header -->
  <tr>
    <#list keys as key>
      <td class="dark-grid"><b>${key}</b></td>
    </#list>
  </tr>
  <#-- Data -->
  <#if data?is_sequence>
    <#list data as record>
        <tr>
            <#list keys as key>
            <td class="light-grid">${record[key]!""}</td>
            </#list>
        </tr>
    </#list>
  <#else>
        <tr>
          <#list keys as key>
          <td class="light-grid">${data[key]!""}</td>
          </#list>
         <h1>Processed script: "${parameters.scriptName}"</h1>
          <#if data?has_content && (data?is_sequence || data?is_hash)>
        </tr> </#if>
  </#if>
</#macro>

フロントエンドに何かを表示しようとすると、次のエラーが発生します。

Error on line 31, column 38 in component://crmsfa/webapp/crmsfa/tests/displayData.ftl Expecting a string, date or number here, Expression record[key]!"" is instead a freemarker.ext.beans.SimpleMethodModel The problematic instruction: ---------- ==> ${record[key]!""} [on line 31, column 36 in component://crmsfa/webapp/crmsfa/tests/displayData.ftl] in user-directive displayData [on line 7, column 9 in component://crmsfa/webapp/crmsfa/tests/displayData.ftl] ---------- Java backtrace for programmers: ---------- freemarker.core.NonStringException: Error on line 31, column 38 in component://crmsfa/webapp/crmsfa/tests/displayData.ftl Expecting a string, date or number here, Expression record[key]!"" is instead a freemarker.ext.beans.SimpleMethodModel at freemarker.core.Expression.getStringValue(Expression.java:126) at

freemarker.core.Expression.getStringValue(Expression.java:93)

これを最初にデバッグできるようにするために、2つのことを知りたいと思います。$ {record [key]! ""}(変数内の! "")または<#assign keys = data?first?keys/>誰かがこれらの2つの式の意味的な意味を説明できますか。

4

1 に答える 1

1

エラーの理由は、のタイプがdata[key]適切でないためです。!''パーツは、失敗した場合には役割を果たしません。これは、存在するか欠落している場合にのみ開始されるためですdata[key]null

それ以外の場合は、マニュアルを使用してください。これらの演算子の意味と、ここにいる人の意味が説明されています:http: //freemarker.org/docs/dgui_template_exp.html#exp_cheatsheet

于 2013-02-02T08:57:29.057 に答える