2017-08-07 27 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

相關問題