2012-04-05 39 views
4

Play 2.0模板引擎是否支持html頁面中的簡單計算。Play 2.0框架模板引擎中的計算

讓我們說,我創建了一個頁面sum.scala.html:

@(a:String, b: String) 

<html> 
<head></head> 
<body> 
    <h1> answer is getSum(@a,@b) </h1> 
</body> 
</html> 

有什麼辦法,我們可以 「的getSum a和b」 通過一些功能?或者有沒有玩2.0的專家知道關於在遊戲2.0模板引擎計算的好主意?謝謝

回答

11

你試過@(a.toInt + b.toInt)

+0

+1適用於我,無論如何,這支持非常基本的操作,我可以看到。 – biesior 2012-04-05 09:05:06

+0

這很酷,它也適用。 – Chan 2012-04-05 09:31:08

+0

Play 2.0允許在'@()'和'@ {}'裏面的多個表達式中放置單個任意scala表達式,因此您可以在模板中使用scala語言和庫的全部功能。當然,控制器對於複雜的計算來說是更好的選擇。 – incrop 2012-04-05 09:51:30

3

您可以將值傳遞給模板,對不對?

@(a:String, b: String, c: String) 

<h1> answer for @a + @b is @c </h1> 

您也可以撥打從Yourcontroller函數模板:

@Yourcontroller.getSum(a,b); 

/app/controllers/Yourcontroller.java廣告的功能(簡單的示例):

public static Integer getSum(String a, String b){ 
    Integer c = Integer.valueOf(a) + Integer.valueOf(b); 
    return c; 
} 
+0

感謝您的建議,biesior。我們可以用你的方式來做,但如果不只有2個變量。例如,我們可能想要計算總和(a + b),總和(d + e)等等。另外,如果使用這個html作爲數據報告頁面。如何計算百分比(a /(a + b)) – Chan 2012-04-05 08:32:38

+0

@Chan:在上一版中增加下一個提示,應該滿足你。無論如何要小心類型,很可能你需要在字符串和數字類型之間轉換,以保持它的工作。 – biesior 2012-04-05 08:35:23

+0

謝謝,biesior。 '@ Yourcontroller.getSum(a,b);'很棒。現在我可以在我的數據報告頁面上進行更多計算。非常感謝。 – Chan 2012-04-05 09:27:47

2

如果你想引用的結果多次,你可以使用defining

@defining(a.toInt + b.toInt) { sum => 
    <h1>The sum is @sum</h1> 
    The sum of @a + @b is @sum 
} 
0

對於斯卡拉HTML模板代碼的重用。您可以在模板中爲此創建模板功能。

@sum(a:Long,b:Long) = { 
@(a + b) 
} 

並在您的模板中將此稱爲普通函數。像 @sum(2,3)