freemarker错误:预期哈希.而是评估为freemarker.template.SimpleScalar

sds*_*sds 4 freemarker

我的模板看起来像这样:

  <#assign senti = "${scmr.results[model]}">
    <#if senti??>
      <td>${senti} ---- ${senti.sentimentType}</td>
      <td>${senti.score?html}</td>
    </#if>
Run Code Online (Sandbox Code Playgroud)

输出如下所示:

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

"----"之前的输出文本表明senti确实是一个有效的java Sentiment对象.方法getSentimentTypegetScore存在并正常工作.

那么,为什么我会收到错误?

dde*_*any 7

随着<#assign senti = "${scmr.results[model]}">您已经转换scmr.results[model]为字符串(标量),这就是原因.只要写<#assign senti = scmr.results[model]>.在FreeMarker表达式中,您可以将值注入字符串文字,如"Hello ${name}!"(相同"Hello " + name + "!"),"${someExpression}"就是这种情况.它与JSP不同.