2017-04-03 7 views
-1

Freemarker 2.3.15のMap内でネストされたコレクションを繰り返し処理したいと思います。Freemarker内のマップ内のネストされたコレクションを反復処理する方法は?

私はビューに次を渡す:

Map<ApplicationPropertyDefinition, Collection<ApplicationProperty>> = getValues(); 

私は次のことを試みた:

<#if propertiesByDefinition?size gt 0> 
<#list propertiesByDefinition?keys as definition> 
    <strong>${definition.externalReference!''}</strong> 

    <#list propertiesByDefinition?values as value> 
     ${value.name} 
    </#list> 

</#list> 
</#if> 

エラー:

Expected hash. value evaluated instead to freemarker.template.SimpleSequence on line 65, column 19 in templates/propertygroup/values.txt. 
The problematic instruction: 
---------- 
==> ${value.name} escaped ${(value.name!"")?html} [on line 65, column 17 in templates/propertygroup/values.txt] 
---------- 

どのように私は正しくネストされたコレクションを反復処理しますか私はそれぞれのApplicationPropertyオブジェクトの文字列値 "name"にアクセスできますか?

答えて

0

ApplicationPropertyDefinitionをパラメータとし、そのパラメータで検出されたコレクションを返すメソッドを追加できます。いくつかのコードの改善と

<#if propertiesByDefinition?size gt 0> 
    <#list propertiesByDefinition?keys as definition > 
     <strong>${definition.externalReference!''}</strong> 

     <#list propertiesByDefinition.get(definition) as value> 
      ${value.name} 
     </#list> 

    </#list> 
</#if> 

そして、ここで:あなたが与えられたdefinition

はこれを試してみてくださいためCollectionオブジェクトを取得する必要が

<#list propertiesByDefinition?keys as definition> 
    <strong>${definition.externalReference!''}</strong> 

    <#list getPropertiesByDefinition(definition) as value> 
     ${value.name} 
    </#list> 
</#list> 
1

:につながる

public Collection<ApplicationProperty> getPropertiesForDefinition(ApplicationPropertyDefinition definition) { 
    return propertiesByDefinition.get(definition) 
} 

<#if propertiesByDefinition?has_content > 
    <#list propertiesByDefinition as definition, collection > 
     <strong>${definition.externalReference!''}</strong> 

     <#list collection as value > 
      ${value.name} 
     </#list> 

    </#list> 
</#if> 

ここで私はFreemarkerの2.3.25以降で利用可能マップの#listキーと値のペアを使用しています...

<#list map as key, value> 
    ${key} : ${value} 
</#list> 
関連する問題