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

缶A私が間違っていることを指摘してください。

+0

をハッシュマップ設定しますか?いずれにしても、あなたのスイッチのスイッチは '<#switch type>'でなければなりません。 – Oleg

+0

もう一つの発言:あなたの事件の後に '<#break>'を忘れました – jeanr

答えて

1

の代わりに、あなたのモデルとして

hashMap.get("type") 

使用

hashMap[type] 
+0

これは 'hashMap.type'でなければなりません。または、 'hashMap [" type "]'ですが、それはもっと長くなります。引用符のない 'hashMap [type]'は、 'type'変数の値をキーで参照します。 – ddekany

関連する問題