Je suis sur le point de choisir la manière d'organiser ma vue (avec spring-mvc, mais cela ne devrait pas avoir beaucoup d'importance).
D'après ce que je vois, il y a 6 options (bien qu'elles ne soient pas mutuellement exclusives) :
- tuiles
- sitemesh
- freemarker
- vélocité
<jsp:include>
<%@ include file="..">
Les tuiles et sitemesh peuvent être regroupées, tout comme freemarker et velocity. Le choix du groupe à utiliser n'est pas le sujet de cette discussion, il y a suffisamment de questions et de discussions à ce sujet.
C'est une lecture intéressante mais je n'arrive pas à me convaincre d'utiliser des carreaux.
Ma question est la suivante : qu'apportent ces cadres qui ne peuvent pas être réalisés correctement avec <@ include file="..">
et JSTL. Points principaux (certains extraits de l'article) :
-
Y compris les parties des pages, comme l'en-tête et le pied de page - il n'y a pas de différence entre les deux :
<%@ include file="header.jsp" %>
y
<tiles:insert page="header.jsp" />
-
Définition de paramètres dans l'en-tête - comme le titre, les balises méta, etc. C'est très important, surtout du point de vue du référencement. Avec les options de templating, vous pouvez simplement définir un placeholder que chaque page doit définir. Mais vous pouvez aussi le faire en jsp avec JSTL, en utilisant
<c:set>
(dans la page d'inclusion) et<c:out>
(dans la page incluse) -
Réorganisation de la mise en page - si vous souhaitez déplacer le fil d'Ariane au-dessus du menu, ou la boîte de connexion au-dessus d'un autre panneau latéral. Si les inclusions de pages (avec jsp) ne sont pas bien organisées, vous devrez peut-être modifier chaque page dans ce cas. Mais si votre mise en page n'est pas trop complexe et que vous placez les éléments les plus courants dans l'en-tête et le pied de page, il n'y a pas lieu de s'inquiéter.
-
Couplage entre les composants communs et le contenu spécifique - je ne trouve pas de problème à ce niveau. Si vous voulez réutiliser un fragment, déplacez-le vers une page qui ne comporte pas d'en-tête/pied de page, et incluez-le partout où cela est nécessaire.
-
Efficacité -
<%@ include file="file.jsp" %>
est plus efficace que tout le reste, car il est compilé une seule fois. Toutes les autres options sont analysées/exécutées plusieurs fois. -
Complexité - toutes les solutions non-jsp nécessitent des fichiers xml supplémentaires, des includes supplémentaires, des configurations de pré-processeurs, etc. Cela représente à la fois une courbe d'apprentissage et l'introduction de plus de points de défaillance potentiels. En outre, cela rend le support et les modifications plus fastidieux - vous devez vérifier un certain nombre de fichiers/configurations afin de comprendre ce qui se passe.
-
Placeholders - la vélocité/freemarker donnent-ils quelque chose de plus que JSTL ? Dans JSTL, vous mettez des caractères de remplissage et vous utilisez le modèle (placé dans la portée de la requête ou de la session, par les contrôleurs) pour remplir ces caractères de remplissage.
Alors, convainquez-moi que je devrais utiliser l'un des frameworks ci-dessus à la place ou en plus du simple JSP.