如何循环scala模板中的flash元素?

时间:2012-04-17 17:19:11

标签: templates scala playframework-2.0

我很难将一些模板从1.2.4翻译成2.0。

到目前为止,我设法循环遍历所有flash元素,但我想分别获取Key和Message(@msgKey包含一个列表,我不知道如何拆分它:/)= > (success, Your data has been updated)

一点点的帮助将不胜感激! :)

这是原始代码:

#{if flash.data.size() > 0}
    #{list items:flash.data, as:'msg'}
        #{if msg.key.substring(0, 4).equals('info')}#{set msg_type:'info' /}#{/if}
        #{if msg.key.substring(0, 4).equals('succ')}#{set msg_type:'success' /}#{/if}
        #{if msg.key.substring(0, 4).equals('warn')}#{set msg_type:'warning' /}#{/if}
        #{if msg.key.substring(0, 4).equals('erro')}#{set msg_type:'error' /}#{/if}
        <div class="alert alert-${msg_type}" data-dismiss="alert">  
            <a title="Close that message" class="close">×</a>
            ${msg.value.raw()}
        </div>
    #{/list}
#{/if}

这是新的:

@if(!flash.isEmpty()) {
    @for(msgKey <- flash) { 
        <div class="alert alert-@msgKey" data-dismiss="alert">      
            <a title="@Messages("misc.message.close")" class="close">×</a>
            @msgKey
        </div>
    }
}

感谢您的帮助,我感谢!

2 个答案:

答案 0 :(得分:6)

Marius solution外,您还可以写下:

@if(!flash.isEmpty()) {
    @for((msgKey, msgValue) <- flash) { 
        <div class="alert alert-@msgKey" data-dismiss="alert">      
            <a title="@Messages("misc.message.close")" class="close">×</a>
            @msgKey
        </div>
    }
}

答案 1 :(得分:4)

闪存中的数据是Map,迭代它会产生tuple of two elements,密钥和值。您可以使用@msgKey._1访问密钥,使用@msgKey._2访问该密钥。