Statyczne(prawie) strony w playframework
Większość aplikacji czy też systemów zarządzania treścią posiada dymanicznie tworzoną treść. Jednak niekiedy część tej treści jest mniej dynamiczna. Zmienia się rzadko lub też wogóle. Przykładem mogą być takie strony jak "Regulamin" czy też "Polityka Prywatności".
Gdy do tworzenia aplikacji używamy dowolnego frameworka zgodnego z wzorcem MVC, treść takich stron powinna być przechowywana w bazie a pobierana przez kontroler.
Innym rozwiązaniem jest napisanie oddzielnej metody dla każdej strony i treść umieszczać w odpowiednim widoku. Pracując z Play Framework można to zrobić o wiele prościej.
Przypuśćmy, że mamy aplikację która ma stronę "Regulamin" jako semistatyczna.
Treść regulaminu umieszczamy w pliku app/views/Pages/regulamin.html.
W routes wpisujemy:
GET /pages/{pageName} Pages.show
Tworzymy kontroler Pages ze zdefiniowaną metodą show:
public class Pages extends Controller
public static void show(String pageName){
String filePath = String.format("app/views/Pages/%s.html", pageName);
notFoundIfNull(Play.getVirtualFile(filePath));
renderTemplate(filePath);
}
}
Jak to działa? Nie wiem czy trzeba tłumaczyć, ale w kilku zdaniach:
Gdy w przeglądarce wpiszemy adres /pages/costam zostaniemy
przekierowani do metody show kontrolera Pages gdzie costam
zostanie użyte jako parametr metody.
Kontroler wtedy szuka pliku costam.html w folderze app/views/Pages i
gdy znajduje - wyświetla go, w przeciwnym razie wyrzuca błąd 404 Not
Found.