如何在Velocity模板中迭代嵌套地图?

3
如何在Velocity模板中迭代嵌套的Map? 我有一个这样的Map:
HashMap<String, HashMap<String, HashMap<String, List<MealPlanGroup>>>> termPlans=new HashMap<String, HashMap<String, HashMap<String, List<MealPlanGroup>>>>(); 

这张地图是用Java填充数据后呈现在HTML页面上的,但无法在HTML页面上进行迭代。
1个回答

5

假设你在模板内绑定了一个名为termPlans的可怕变量,你可以执行以下操作:

#foreach( $level1 in $termPlans )
    <!-- Iterating over the values of the first Map level -->
    #foreach( $level2 in $level1 )
        <!-- Iterating over the values of the second Map level -->
        #foreach( $list in $level2 )
            <!-- Iterating over the values of the third Map level -->
            #foreach( $mealPlanGroup in $list )
                <!-- Iterating over the values of the List -->
                $mealPlanGroup.id <br/>
            #end
        #end
    #end
#end

这将仅使用映射值,并忽略它们的键。如果您还需要键,则可以尝试迭代entrySet()

#foreach( $level1Entry in $termPlans.entrySet() )
    <!-- Iterating over the values of the first Map level -->
    Level 1 key is $level1Entry.getKey()

    #foreach( $level2Entry in $level1Entry.getValue().entrySet() )
        Level 2 key is $level2Entry.getKey()

        <!-- Iterating over the values of the second Map level -->
        #foreach( $level3Entry in $level2Entry.getValue().entrySet() )
            Level 3 key is $level3Entry.getKey()

            <!-- Iterating over the values of the third Map level -->
            #foreach( $mealPlanGroup in $level3Entry.getValue() )
                <!-- Iterating over the values of the List -->
                $mealPlanGroup.id <br/>
            #end
        #end
    #end
#end

请提供键和值迭代。 - Ananda Tapare
无法迭代键和值对,请发送代码。 - Ananda Tapare
所有的 .getKey().getValue() getter 可以被 .key.value 替换,Velocity 会自动调用 getter。 - Claude Brisson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接