2014-06-05 30 views
0

Play2模板引擎存在問題。一些變量在渲染過程中不被解釋。play2模板上的變量未解釋

變量{key.getKey}在被雙引號引起時不被解釋。我能如何解決這個問題?

PLAY 2.2.3 TEMPLATE(index.scala.html)

@flash 
    @(if (flash.size > 0) { 
     flash.entrySet.iterator.map { key => 
      <div class="row"> 
       <div class="large-12 columns"> 
        <div class="alert-box radius {key.getKey}" data-alert=""> 
         {key.getKey.toUpperCase} &mdash; {key.getValue} 
         <a href="#" class="close">&times;</a> 
        </div> 
       </div> 
      </div> 
     } 
    }) 

HTML OUTPUT:

{"success": "The item has been created"} 
    <div class="row"> 
     <div class="large-12 columns"> 
      <div class="alert-box radius {key.getKey}" data-alert=""> 
        SUCCESS &mdash; The item has been created 
        <a href="#" class="close">&times;</a> 
      </div> 
     </div> 
    </div> 

PLAY 2.2.3 TEMPLATE(index.scala.html)與@可變

@flash 
    @(if (flash.size > 0) { 
     flash.entrySet.iterator.map { key => 
      <div class="row"> 
       <div class="large-12 columns"> 
        <div class="alert-box radius @{key.getKey}" data-alert=""> 
         {key.getKey.toUpperCase} &mdash; {key.getValue} 
         <a href="#" class="close">&times;</a> 
        </div> 
       </div> 
      </div> 
     } 
    }) 

HTML輸出:

{"success": "The item has been created"} 
    <div class="row"> 
     <div class="large-12 columns"> 
      <div class="alert-box radius @{key.getKey}" data-alert=""> 
        SUCCESS &mdash; The item has been created 
        <a href="#" class="close">&times;</a> 
      </div> 
     </div> 
    </div> 

回答

1

編輯:由於目前還不清楚這是Scala還是早期的Java,我已經修改了我的答案以適用於Play Java。

看起來,這些模板在Java中的工作方式略有不同,圍繞着if聲明的括號讓事情變得糟糕。無論如何,你並不需要if聲明,因爲映射一個空的迭代器將無能爲力。這工作:

@flash.entrySet.iterator.map { key => 
    <div class="row"> 
     <div class="large-12 columns"> 
      <div class="alert-box radius @{key.getKey}" data-alert=""> 
       @{key.getKey.toUpperCase} &mdash; @{key.getValue} 
       <a href="#" class="close">&times;</a> 
      </div> 
     </div> 
    </div> 
} 

如果你真的想要的if

@if(flash.size > 0) { 
    (above code) 
} 
+0

我已經嘗試解決方案,unfortunaly,變量仍不能解釋(見我的編輯職位)。 「{key =>」塊中的代碼被解釋爲一個XML文檔(當html標籤錯誤時,我得到XML錯誤) – 0xBAADF00D

+0

「flash」的類型是什麼?還有更多這個源文件嗎?我自己試了一下(在視圖中只使用你的代碼),它工作,所以需要更多的信息。 –

+0

這是Play 2.2.3提供的默認flash var。在我的控制器中,我只是把這個代碼 - >閃光(「成功」,「項目已創建」); – 0xBAADF00D