Wenn ich eine gemeinsame Benutzeroberfläche auf mehreren Seiten haben möchte, z. B. ein Menü, was ist die empfohlene Vorgehensweise?
Es würde sowohl den Template-Code als auch einen Back-End-Controller enthalten (ähnlich wie "Snippets" im LiftWeb-Framework).
Mir ist bewusst, dass es ein Menü-Modul für Play gibt, aber ich bin mehr daran interessiert, wie dies im Allgemeinen erreicht werden würde.
Es gibt zwei Möglichkeiten, allgemeinen Ansichtscode in Play Framework einzubinden.
Sie können das #{include}
-Tag oder das #{extends}
-Tag verwenden.
Das extends-Tag erstreckt sich, wie der Name schon sagt, von einer übergeordneten Ansicht. Das extends-Tag wird standardmäßig im Skeleton-Code verwendet, der von Play erstellt wird, wenn Sie eine neue Anwendung erstellen. Es erweitert die main.html. Sie fügen Ihren Code hier hinzu.
Mit dem includes-Tag können Sie an einem bestimmten Punkt einen gemeinsamen Code in Ihre Vorlagen einfügen. Das funktioniert in etwa genauso, wie ein php include / require oder jsp includes work.
Das Problem tritt auf, wenn Ihr Vorlagencode auch Daten oder Logik vom Modell (über den Controller) erfordert. Wenn dies der Fall ist, müssen Sie die @Before-oder @With-Notation in Ihrem Controller verwenden, um sicherzustellen, dass der gemeinsame Controllercode jedes Mal ausgeführt wird. Sie können der renderArgs-Liste beliebige Daten hinzufügen, damit sie in der Ansicht verwendet werden können.
Ein einfaches Beispiel für die Verwendung von renderArgs wäre.
%Vor%Die Werte, die Sie in renderArgs eingegeben haben (Menü und im Beispiel ausgewählt), sind genauso verfügbar, als ob Sie sie an die Rendermethode übergeben hätten.
Tags und Links java playframework