Comment changer les Spring MVC du comportement dans le traitement des url " dot " de caractère
Je suis en train de migrer un projet web hors de Jersey à Spring MVC 3.0. Le processus était vraiment simple jusqu'à l'instant où j'ai commencé à migrer les contrôleurs censé gérer les URL avec dot notations: "/myApp/ressources/créer/racine.subFolder1". Spring MVC semble sans vergogne couper le ".subFolder1" partie de l'URL, qui se trouve profondément à l'intérieur du cadre de code (voir AbstractUrlHandlerMapping classe)
uriTemplateVariables.putAll(getPathMatcher().extractUriTemplateVariables(matchingPattern, urlPath));
Donc ma méthode de contrôleur est appelé avec racine paramètre de chemin, pas racine.subFolder1
J'aimerais vraiment trouver un moyen de personnaliser ce comportement. Des conseils?
PS. L'exigence est plutôt de garder la structure des URL, c'est à dire des solutions de contournement, comme le passage à la requête params "/myApp/ressources/créer/?path=root.subFolder1" je ne considère pas que.
PS. Mon Printemps config ressemble
<mvc:annotation-driven/>
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="useDefaultSuffixPattern" value="false" />
</bean>
<context:component-scan base-package="my.app.pkg"/>
OriginalL'auteur Alex Sonar | 2010-11-09
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
Cela devrait faire en sorte que le Printemps ne cherche pas à analyser les extensions.
Voir aussi: Spring MVC @PathVariable obtention tronqués
Et: Le Printemps De La Documentation
Potentiel des fichiers de configuration:
web.xml (où j'ai mis le servlet trucs)
Puis dans WEB/INF/spring/mvc-config.xml j'ai quelque chose comme ceci:
Dois-je déclarer ce bean par lui-même ou est aussi une dépendance à un autre bean? Ressemble juste de le déclarer au printemps servlet de configuration xml n'aide pas...
Je suis en supposant que le servlet.xml config vous permet de configurer la servlet. Utilisez-vous des init-param config pour contextConfigLocation?
Cela ne fonctionne pas pour moi. La raison en est que cette propriété n'est pas censée répondre à ma question, au moins de la documentation stipule clairement que "les chemins qui comprennent un ".xxx" suffixe ou se terminer par "/" déjà ne seront pas * transformés à l'aide du suffixe par défaut de motif, en tout cas."
Plus: quand j'ai ajouté DefaultAnnotationHandlerMapping pour un printemps contexte, et placé deux points d'arrêt dans le code: 1) dans setUseDefaultSuffixPattern() et 2) dans addUrlsForPath(), à la fois de la classe DefaultAnnotationHandlerMapping, il est apparu que la addUrls est appelé AVANT setUseDefaultSuffixPattern, qui pourrait être la partie la raison pour laquelle je ne peux pas remplacer le printemps comportement
OriginalL'auteur AHungerArtist
Une autre possibilité, qui peut être plus facile dans certains cas, consiste à ajouter un point
/
à la fin de l'URL.De sorte que votre URL est
/myApp/resources/create/root.subFolder1/
Cela fonctionne dans mon application avec Spring MVC 3.1.
OriginalL'auteur Josh
Pour
au travail, vous devez supprimer/commentaire la
et tout autre mvc: configurations définies comme elles l'emportent sur mesure pour votre bean déclarations.
OriginalL'auteur Ryba
C'était une chienne. Un gars dans notre équipe, voici l'ai eu à travailler le week-end. Nous allions aller avec un trait de soulignement, mais il l'a obtenu. Il a enlevé @Contrôleur à partir de la classe de contrôleur d'attributs et de gauche @RequestMapping vide pour la classe. Sur le public des méthodes Http get et put, il a ajouté "/2.0/" à la @RequestMapping. L'exemple ci-dessous.
Bonne chance à tous. Ce problème a sucé.
OriginalL'auteur Robert Beltran
Je n'ai presque le même que Robert Beltran, mais j'ai quitté @Contrôleur d'annotation pour la classe. L'Important est de mettre "/1.0/" à la @RequestMapping sur les méthodes, ne sont pas en cours d'annotation.
Mon exemple:
OriginalL'auteur Michal Korecki
La réponse ci-dessus devrait corriger, mais assurez-vous de retirer
<mvc:annotation-driven/>
de votre configuration XML, sinon le haricot définition est contesté par une partie de l'annotation-driven tag.Voir le java docs et la le code source pour toute la configuration vous manquer quand cette commodité balise est supprimée.
OriginalL'auteur Michael