2013-04-14 22 views
4

我知道我可以在模板中定義一個可重用的純Scala的塊這樣的:可重複使用Scala代碼在播放所有意見

@title(text: String) = @{ 
    text.split(' ').map(_.capitalize).mkString(" ") 
} 

我現在可以調用模板@title("someString")但是這個代碼塊不是從訪問在這個模板之外。

我該如何聲明可以從其他模板訪問的塊?

我試圖創建一個新的模板title.scala.html這樣的:

@(text : String) 
@{ 
    text.split(' ').map(_.capitalize).mkString(" ") 
} 

現在我可以從我想要的任何模板調用@title("someString"),但是這並沒有給我確切的結果與模板中的第一個塊相同(我假設在第一種情況下返回String,而在第二種情況下返回Html)。

我正在使用Play框架2.0.4,我在Java中編碼(因此我的Scala知識有限)。

回答

5

使用tags是針對建築的HTML代碼可重用模塊,因此它返回Html

要與普通類型的數據很容易地工作,你可以很容易地在剛創建utils包添加自定義的Java類(一個例子(在app目錄),並在它準備好所有必需的格式化的靜態方法:

utils.MyFormats.java:

package utils; 

import org.apache.commons.lang3.text.WordUtils; 

public class MyFormats { 

    public static String capitalize(String str) { 
     return WordUtils.capitalize(str); 
    } 

    public static int sumElements(int a, int b) { 
     return a + b; 
    } 

} 

模板中:

<h2>Capitalized each word: @(utils.MyFormats.capitalize("foo bar"))</h2> 
<h3>Sum of two integers, 2+3 = @(utils.MyFormats.sumElements(2, 3))</h3>