4

私のテンプレートは次のようになります。

  <#assign senti = "${scmr.results[model]}">
    <#if senti??>
      <td>${senti} ---- ${senti.sentimentType}</td>
      <td>${senti.score?html}</td>
    </#if>

出力は次のようになります。

POSITIVE(1.0/1) ---- Expected hash. senti evaluated instead to freemarker.template.SimpleScalar on line 5, column 27 in com/addthis/sentiment/sentidemo.ftl.

「----」の前の出力テキストは、sentiが実際に有効な Java Sentimentオブジェクトであることを示しています。メソッドgetSentimentTypeおよびgetScoreが存在し、機能しています。

では、なぜエラーが発生するのですか?

4

2 に答える 2

7

あなた<#assign senti = "${scmr.results[model]}">が文字列(スカラー)に変換scmr.results[model]したので、それが理由です。ただ書いて<#assign senti = scmr.results[model]>ください。FreeMarker 式では、値を文字列リテラル"Hello ${name}!"( と同じ"Hello " + name + "!") に注入できますが、"${someExpression}"これはまさにその例です。JSPとは違います。

于 2012-07-25T09:04:19.393 に答える