Je suis sur le point de choisir une manière d'organiser ma vue (avec spring-mvc, mais cela ne devrait pas avoir beaucoup d'importance)
Il y a 6 options pour autant que je vois (bien qu'elles ne soient pas mutuellement exclusives):
- Carrelage
- Sitemesh
- Freemarker
- Rapidité
<jsp:include>
<%@ include file="..">
Les tuiles et Sitemesh peuvent être groupés; tout comme Freemarker et Velocity . La question de savoir laquelle utiliser dans chaque groupe ne fait pas partie de cette discussion, il y a suffisamment de questions et de discussions à ce sujet.
C'est une lecture intéressante , mais je ne peux pas vraiment me convaincre d'utiliser des carreaux.
Ma question est la suivante: que donnent ces cadres qui ne peuvent pas être correctement réalisés avec <@ include file="..">
et JSTL. Points principaux (certains tirés de l'article):
Y compris des parties de pages, comme l'en-tête et le pied de page - il n'y a pas de différence entre:
<%@ include file="header.jsp" %>
et
<tiles:insert page="header.jsp" />
Définir des paramètres dans l'en-tête - comme le titre, les balises meta, etc. Ceci est très important, en particulier du point de vue SEO. Avec les options de création de modèles, vous pouvez simplement définir un espace réservé que chaque page doit définir. Mais vous pouvez donc en jsp avec JSTL , en utilisant
<c:set>
(dans la page incluse) 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 zone de connexion au-dessus d'un autre panneau latéral. Si les inclusions de page (avec jsp) ne sont pas bien organisées, vous devrez peut-être changer chaque page dans de tels cas. Mais si votre mise en page n'est pas trop complexe et que vous mettez les éléments communs dans l'en-tête / le pied de page, il n'y a rien à craindre.
Couplage entre les composants communs et le contenu spécifique - je ne trouve pas de problème avec cela. Si vous souhaitez réutiliser un fragment, déplacez-le vers une page qui n'inclut aucun en-tête / pied de page et incluez-le là où c'est nécessaire.
Efficacité -
<%@ include file="file.jsp" %>
est plus efficace que toute autre chose, car il est compilé une 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 inclusions supplémentaires, des configurations de pré-processeur, etc. Il s'agit à la fois d'une courbe d'apprentissage et d'introduire davantage de points de défaillance potentiels. En outre, cela rend le support et le changement plus fastidieux - vous devez vérifier un certain nombre de fichiers / configurations afin de comprendre ce qui se passe.
Placeholders - Est-ce que Velocity / Freemarker donne quelque chose de plus que JSTL? Dans JSTL, vous mettez un espace réservé et utilisez le modèle (placé dans la portée de la requête ou de la session, par les contrôleurs) pour remplir ces espaces réservés.
Alors, convainquez-moi que je devrais utiliser l'un des frameworks ci-dessus au lieu de / en plus de JSP ordinaire.