2017-08-07 28 views
1

我有以下的HashMap:如何让freemarker的特定键的值

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) 

可以在请指出我做错了什么?

+0

你设置的HashMap为你的模型?在任何情况下,你的交换机应该只是'<#switch type>' – Oleg

+0

另一个评论:你忘记了'<#break>'你的情况 – jeanr

回答

1

而不是

hashMap.get("type") 

使用

hashMap[type] 
+0

这应该是'hashMap.type'。或者,'hashMap [“type”]',尽管时间更长。不带引号的'hashMap [type]'使用'type'变量的值查找关键字。 – ddekany

相关问题