L'ajout de printemps de la bibliothèque pour l'utilisation de JSP Taglibs pour la sécurité dans Freemarker
Je suis à l'aide de printemps avec freemarker que le moteur de template. Freemarker permet d'utiliser les Jsp Taglibs, pour la sécurité, par exemple, par l'ajout de
<#assign security=JspTaglibs["http://www.springframework.org/security/tags"] />
pour les modèles, ce qui me permet d'utiliser par exemple
<@security.authorize ifNotGranted="ROLE_ADMIN">
whatever
</@security.authorize>
Mais, Printemps/Freemarker ne peut pas trouver le taglibs, sauf s'ils sont ajouté au classpath, j'ai donc ajouté
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
<version>${spring.version}</version>
</dependency>
à mon pom.xml dans mon projet.
Mais de toute façon, les balises ne pouvait pas être trouvé! J'ai dû ajouter de la spring-security-taglibs.jar dans WEB-INF/lib du dossier pour les balises à trouver.
Ce que quelqu'un sait pourquoi le pot doit être ajouté explicitement dans le dossier lib?? Pourquoi ne sont-ils pas trouvé par tomcat, dans mon cas?
EDIT @ddekany
Merci. La stacktrace est la suivante, si l'spring-security-taglibs.jar n'est pas copié dans le dossier WEB-INF/lib
No mapping defined for http://www.springframework.org/security/tags
The problematic instruction: ---------- ==> assignment:
security=JspTaglibs["http://www.springframework.org/security/tags"]
[on line 12, column 1 in home.ftl] in user-directive content.main
[on line 8, column 9 in home.ftl] in user-directive layout.global
[on line 2, column 1 in home.ftl]
---------- Java backtrace for programmers: ----------
freemarker.template.TemplateModelException:
No mapping defined for http://www.springframework.org/security/tags at
freemarker.ext.jsp.TaglibFactory.get(TaglibFactory.java:180) at
...
tld
-s) en utilisant le courant(?) la classe loader ou tel, mais je suis peut-être mal à cela.OriginalL'auteur matthaeus | 2012-08-22
Vous devez vous connecter pour publier un commentaire.
Au cas où quelqu'un d'autre s'exécute dans cette...
Vous devez ajouter le printemps des fichiers de support, comme indiqué ici (juste quelques cut & coller) http://static.springsource.org/spring-webflow/docs/2.2.x/reference/html/ch13s09.html.
Et d'ajouter des dépendances:
En supposant que vous avez tout le reste fonctionne, vous devriez maintenant être en mesure d'ajouter la bibliothèque de tags de vos pages. Par exemple:
xmlns:s="http://www.springframework.org/security/tags"
< s:autoriser ifAllGranted="USER_ROLE">
Bonjour utilisateur
< /sec:autoriser>
*pour ajouter un espace b/f 'sec' pour poster
spring-faces
était 2.4.1.OriginalL'auteur MattC
Utiliser cette Maven dependency:
org.springframework
etorg.springframework.security
sont différents cadres avec différents numéros de version.OriginalL'auteur Jerome Jaglale
Avez-vous d'inclure le
JspSupportServlet
comme indiqué ici et ici[MODIFIER]
Après la lecture de votre post un peu plus prudent, je vous conseille de la lire la section "JSP.7.3.2" (et au-delà) de la Spécification JSP.
JspSupportServlet
comme vous l'avez proposé, mais l'erreur est toujours la même. En regardant la Section "JSP.7.3.2" dans le spécification JSP l'essentiel je pense, c'est: "Le TLD chemin d'accès aux ressources est interprété par rapport à la racine de l'application web et doit se résoudre à un TLD fichier directement, ou à un fichier JAR qui a un TLD fichier à l'emplacement META-INF/taglib.tld". Est-ce la réponse pourquoi tomcat ne peut pas trouver le META-INF/*.tld fichier? Parce que ça je l'ai inclus via une dépendance maven?Le META-INF/*.tld fichiers sont chargés de pot. Les fichiers jar besoin d'être dans le classpath qui est WEB-INF/lib. Si il n'est pas trouvé il y a pas de conteneur J2EE va charger le tld.
Ok, je comprends, mais pourquoi n'est-il pas suffisant pour ajouter la dépendance maven pour le printemps taglib bibliothèque? Comme peut être vu dans ceci et ceci des exemples?
Ce qui ne peut signifier que votre projet maven est le programme d'installation de mal. Lorsque je crée une "guerre" projet maven, il met toujours les libs dans le web-inf/lib du dossier.
OriginalL'auteur tom