【问题标题】:how to get specific key's value in freemarker如何在freemarker中获取特定键的值
【发布时间】:2017-08-07 20:07:24
【问题描述】:

我有以下 HashMap:

 Map<String, Object> hashMap = new HashMap<>();
 hashMap.put("type", "message");

我在freemarker模板中写了一个switch语句:

    <#switch hashMap.get("type")>
        <#case "message">
            <p>Message type</p>
            <#default>
                <p>Nothing</p>
    </#switch>

但是当我执行代码时,我得到了异常:


freemarker.core.InvalidReferenceException: [... Exception message was already printed; see it above ...]
    at freemarker.core.InvalidReferenceException.getInstance(InvalidReferenceException.java:134)
    at freemarker.core.UnexpectedTypeException.newDesciptionBuilder(UnexpectedTypeException.java:80)
    at freemarker.core.UnexpectedTypeException.<init>(UnexpectedTypeException.java:43)
    at freemarker.core.NonHashException.<init>(NonHashException.java:49)
    at freemarker.core.Dot._eval(Dot.java:48)
    at freemarker.core.Expression.eval(Expression.java:81)
    at freemarker.core.MethodCall._eval(MethodCall.java:58)
    at freemarker.core.Expression.eval(Expression.java:81)
    at freemarker.core.EvalUtil.compare(EvalUtil.java:111)
    at freemarker.core.SwitchBlock.accept(SwitchBlock.java:67)
    at freemarker.core.Environment.visit(Environment.java:326)
    at freemarker.core.Environment.visit(Environment.java:332)
    at freemarker.core.Environment.process(Environment.java:305)
    at freemarker.template.Template.process(Template.java:378)
    at com.comp.www.reports.FreeMarkerReport.main(FreeMarkerReport.java:70)

谁能指出我做错了什么?

【问题讨论】:

  • 您是否将 hashmap 设置为模型?无论如何,您的开关应该只是&lt;#switch type&gt;
  • 另外一句话:你的case后面忘记&lt;#break&gt;

标签: java freemarker


【解决方案1】:

代替

hashMap.get("type")

使用

hashMap[type]

【讨论】:

  • 应该是hashMap.type。或者,hashMap["type"],虽然那更长。不带引号的hashMap[type] 使用type 变量的值的键查找。
猜你喜欢
  • 1970-01-01
  • 2012-01-15
  • 2017-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-30
  • 2023-04-09
相关资源
最近更新 更多