2012-04-17 9 views
4

1.2.4から2.0のテンプレートを少し翻訳しようとしています。スカラーテンプレートのフラッシュ要素をループする方法は?

これまでのところ、すべてのフラッシュ要素をループすることができましたが、キーとメッセージを別々に取得したいと思います(@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 [email protected]" data-dismiss="alert">  
      <a title="@Messages("misc.message.close")" class="close">×</a> 
      @msgKey 
     </div> 
    } 
} 

おかげで、私は感謝します!

+0

は、それがタプルです。 –

+0

精度のおかげで、私はスカラーで新しいveeeryです! :p –

+0

この質問には適切なタイトルを設定することをお勧めします。 – Somatik

答えて

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

これは完璧です!あなたがそれについてclasseの名前を設定する場合は、キーの4番目の文字列をチェックする方法のヒントを私に追加できますか? –

+1

'@if(msgKey.startsWith(" info ")){...}'やパターンマッチングを使用してください。 –

4

フラッシュ内のデータはMapであり、それを反復するとtuple of two elements、キーと値が得られます。キーには@msgKey._1、値は@msgKey._2でアクセスできます。

+0

しかし、Daniel C. Sobralの回答のように、タプルのパターンマッチはきれいです。 –

関連する問題