2012-04-17 16 views
4

我很难将1.2.4版本的模板翻译成2.0。到目前为止,我设法遍历所有的flash元素,但我想单独获取Key和Message(@msgKey包含一个列表,而我不知道如何分割它):/) =>(success, Your data has been updated)如何遍历scala模板中的flash元素?

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

这里是原代码:

#{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 [email protected]" data-dismiss="alert">  
      <a title="@Messages("misc.message.close")" class="close">×</a> 
      @msgKey 
     </div> 
    } 
} 

感谢您的帮助,我很感激!

+0

这不是一个列表,它是一个元组。 – 2012-04-17 21:38:29

+0

感谢您的精确度,我是scala的新成员! :p – 2012-04-18 05:22:02

+0

你可能想为这个问题设置一个正确的标题! – Somatik 2012-04-18 12:38:49

回答

6

此外Mariussolution,你也可以这样写:

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

这是完美的!请给我添加关于如何检查密钥的4个第一个字符串的提示,以便为了设置关于它的类名称?我会apreciate – 2012-04-18 09:20:02

+1

使用@if(msgKey.startsWith(“info”)){...}'或模式匹配。 – 2012-04-18 10:11:00

4

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

+0

虽然,在Daniel C. Sobral的回答中,对元组进行模式匹配会更漂亮。 – 2012-04-18 02:49:45