2012-04-05 6 views
4

Spielt 2.0 Template Engine unterstützt die einfache Berechnung in der HTML-Seite.Berechnung in Play 2.0 Framework Vorlage Engine

Lassen Sie uns sagen, erstelle ich eine sum.scala.html Seite:

@(a:String, b: String) 

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

Gibt es eine Möglichkeit, dass wir konnten "getSum von a und b" über eine Funktion? oder Kennt irgendein 2.0-Experte eine gute Idee über die Berechnung in der 2.0 Template-Engine? Danke

Antwort

11

Sie @(a.toInt + b.toInt) versucht haben?

+0

+1 funktioniert für mich, trotzdem unterstützt dies sehr grundlegende Operationen, wie ich sehen kann. – biesior

+0

Das ist cool, es funktioniert auch. – Chan

+0

Play 2.0 erlaubt es, einen einzelnen beliebigen Scala-Ausdruck innerhalb von '@()' und mehrere Ausdrücke innerhalb von '@ {}' zu setzen, so dass Sie die volle Leistungsfähigkeit von scala language und library in Templates nutzen können. Aber Controller ist natürlich besser für komplexe Berechnungen. – incrop

3

Sie können den Wert einfach an die Vorlage übergeben, nicht wahr?

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

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

Sie können auch Funktion von Yourcontroller in der Vorlage nennen:

@Yourcontroller.getSum(a,b); 

In /app/controllers/Yourcontroller.java Anzeige der Funktion (einfachste Probe):

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

danke für Ihren Vorschlag, Biesior. Wir können es auf Ihre Art tun, aber was ist, wenn es nicht nur 2 Variablen gibt? Zum Beispiel können wir die Summe (a + b), die Summe (d + e) ​​usw. berechnen. Darüber hinaus, wenn diese HTML als Datenberichtsseite verwenden. Was ist mit der Berechnung des Prozentsatzes (a/(a ​​+ b)) – Chan

+0

@Chan: der nächste Tipp in der letzten Ausgabe hinzugefügt, sollte Sie zufriedenstellen. Seien Sie auf jeden Fall vorsichtig mit Typen, wahrscheinlich müssen Sie zwischen String und numerischen Typen konvertieren, damit es funktioniert. – biesior

+0

Danke, Biesior. '@ Yourcontroller.getSum (a, b);' ist großartig. Jetzt kann ich mehr Berechnungen auf meiner Datenberichtsseite durchführen. Danke vielmals. – Chan

2

Wenn Sie das Ergebnismehrfach beziehen mögen, können Sie defining verwenden:

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

Zur Wiederverwendung des Codes in scala HTML-Vorlage. Sie können dazu eine Vorlagefunktion in der Vorlage erstellen.

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

Und nennen Sie dies in Ihrer Vorlage als normale Funktionen. Wie @sum (2,3)