Qu'est-ce qu'un moyen simple de résoudre le chemin d'accès à un fichier JSP qui n'est pas situé dans le répertoire Root JSP d'une application Web à l'aide de SpringMVCS Viewresolvers? Par exemple, supposons que nous ayons la structure d'application Web suivante:
<bean id="urlFilenameViewController" class="org.springframework.web.servlet.mvc.UrlFilenameViewController"> </bean>
7 Réponses :
Vous devez définir la propriété comme suit:
<property name="prefix" value="/WEB-INF/jsp/"/>
Désolé que le préfixe était une faute de frappe, je l'ai corrigée maintenant. Cependant, si je dois sécuriser / admin1.jsp (ou Secure / Admin1.htm), cela va résoudre les yeux sur /web-inf/jsp/admin1.jsp et n'incluez pas le dossier sécurisé car cela ne fait pas partie du préfixe (Je blesse)
J'utilise 2.5.6.Sec01. Je l'ai essayé, mais le problème semble être dans la manière dont les mappages dans le SingleLhandlerMermerming sont spécifiés dans mon exemple. Toute demande à / Secure / ** entraînera le ressort en attendant que le fichier JSP réside dans / web-inf / jsp /, lorsque le fichier réel est situé dans / web-inf / jsp / sécurisé /. J'ai découvert une solution de contournement appropriée qui dessert mes objectifs, mais cela a ses limites. Je vais continuer à poster que aussi.
Vous pouvez essayer de donner des noms des vues du contrôleur comme ayant préfixe et suffixe mappé comme ci-dessous p> p> Ceci finira par mapper pour /web-inf/jsp/secure/admin.jsp et /web-inf/jsp/secure/admin2.jsp
Je ne sais pas que je comprends comment les propriétés Formview et Supplyview s'appliquent ici lorsque je souhaite utiliser l'URLFILENameViewController.
Formview and SupplyView sont les noms de vue que vous pouvez injecter dans vos contrôleurs, si vous souhaitez des vues configurables. Ceci 2 sont par défaut à votre disposition au cas où vous utilisez SimpleFormController.
Non, cela n'a rien à voir avec les formes, ce ne sont que des pages JSP avec peu de contenu, et bien qu'il y ait deux pages dans l'exemple que j'ai donné, il n'est pas limité à deux. Je n'utilise même pas un contrôleur formulaire i> et je pense que cela abuserait des propriétés de formulaires et de successionsView si je devais tenter de l'utiliser de la manière dont vous suggérez. Pas même sûr comment cela fonctionnerait de toute façon.
Vous devez définir la propriété toujours utilisée dans le gestionnaire sur le répertoire: Cela obligera le gestionnaire à utiliser la partie "/ sécuriser /" de l'URI, puis le résolveur Inclure-le lorsque vous recherchez un JSP dans Web-Inf / JSP. P> P>
Pas de chance avec ça. Enchanté toujours dans le dossier Root JSP.
Je n'ai pas pu découvrir la solution exacte à la question que j'ai posée, mais j'ai une solution de contournement qui convient à mes exigences particulières. Le problème semble mentir dans la cartographie du handeur. Si spécifié comme dans l'exemple de l'article, toutes les demandes aux pages du dossier sécurisé résultent dans une tentative infructueuse de localiser le fichier JSP réel dans le dossier Cependant, si spécifié, si spécifié, comme: p> , toutes les pages sont résolues correctement. Une requête à / web-inf / jsp / code> lorsque bien sûr le dossier Le fichier actuel est situé dans / web-inf / jsp / sécurisé / code>. /login.html code> accédera à un contrôleur de formulaire spécifique mais demande à toutes les autres pages, que ce soit dans le répertoire JSP racine ou un répertoire sous-répertoire. Pour moi, c'est bien parce que ce que je cherchais vraiment était un moyen d'éviter de spécifier un contrôleur pour chaque page de l'application (HMMM ... Peut-être auriez peut-être que ceci est clair dans le premier post - et peut-être peut-être de meilleures façons de fais-le quand même (?))). Le ** / *. HTM code> agit comme un cas de capture et toutes les pages que je veux géré par un autre contrôleur peut être spécifié explicitement au-dessus de cette propriété, comme illustré par /login.htm code>. p> p>
Essayez avec urlfileNameViewController code> ou retour Nouveau modèleandview ("Secure / Connexion"); Code> P>
On dirait que cela devrait fonctionner, selon les documents: p>
Les configurations que vous avez montrées semblent correspondre aux exemples de la doc. Si votre servlet Spring MVC Dispatcher est mappé sur "/" alors demande à "{contexte} /secure/whatever.jsp" devrait être traduit en vue Nom "Secure / Whats". Peut-être que cela a quelque chose à voir avec le "**" Wildcard? Ou peut-être que certaines de vos autres configtions ne sont pas correctes? Pouvez-vous inclure la partie de votre web.xml où vous configurez votre servlet Dispatcher Spring et incluez également les chemins complets que vous demandez dans votre navigateur? P>
Une autre façon de trouver le problème serait de télécharger le code source Spring MVC et de l'inclure dans votre application, puis utilisez un débogueur pour voir exactement ce qui se passe dans les haricots SIMPERLHANDLERMERMERFERMERS et URLFILENAMEVIEWNATEVIEWVIEWVIEWSTROLLER pour essayer de classer l'erreur. . Vous devriez être capable de déterminer assez rapidement où les choses vont mal comme ça. P>
Tous les sous-dossiers sont accessibles à l'aide de la carte wild dans le préfixe p>
p>
du contrôleur Vous pouvez simplement retourner le nom JSP en tant que chaîne et le JSP sera affiché même s'il est sous Sous-dossiers de / Web-INF / JSP / similaire / Web-INF / JSP / ABC P>
Note non liée, mais vous n'avez pas besoin de spécifier
jstlView code> comme référence code> ci-dessus code>.