2010-03-11 3 views
1

Spring J'ai récemment mis à jour mon application du printemps 2.5.6 au printemps 3.0.0. Quelques jours plus tard, j'ai remarqué que certaines de mes pages n'étaient plus fonctionnelles. Le problème semble être mon contrôleur UserContent.do.nouvelles lignes et SimpleUrlHandlerMapping

UserContent.do est mappé en utilisant le mappage SimpleUrlHandlerMapping. Il ressemble à ceci:

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
<property name="mappings"> 
<props> 
    <prop key="/*/UserContent.do">UserContentController</prop> 
</props> 
</property> 
</bean> 

Le problème est que je laisse le contenu généré par l'utilisateur dans ce répertoire milieu, de sorte que ces URL pourrait être quelque chose:

http://mysite.com/foo/UserContent.do 
http://mysite.com/bob/UserContent.do 
http://mysite.com/foo%0a%0dbob/UserContent.do 

C'est ce troisième cas qui est le problème. Pour une raison quelconque, il semble que "\ r \ n" ne correspond plus * au printemps 3. Il semble que cela fonctionne encore au printemps 2.5.6.

Je prévois plus permettant aux utilisateurs d'entrer des caractères dans cette nouvelle ligne place. C'était un oubli pour commencer. Cependant, j'aimerais que ces URL continuent de fonctionner pour des raisons de référencement. Y a-t-il un moyen de mapper une URL avec une nouvelle ligne codée en URL dans le printemps 3?

Répondre

3

Il semble que la solution de contournement la plus simple consiste à utiliser /**/UserContent.do (elle correspondra également / au milieu).

EDIT:

Une approche plus élégante, ne correspond pas à / « s: /{foo:(?s:.*)}/UserContent.do (déclare une variable de chemin avec un regexp personnalisé à l'aide {name:regexp} syntaxe et utilise (?s:X) pour mettre le drapeau Pattern.DOTALL sur)

+0

Whoa, SimpleUrlHandlerMapping prend en charge les expressions régulières? Est-ce documenté n'importe où? –

+1

@Captain: Question intéressante. Il est documenté que 'SimpleUrlHandlerMapping' utilise' AntPathMatcher', et que 'AntPathMatcher' peut gérer les variables de chemin. Le fait que 'AntPathMatcher' puisse gérer des expressions rationnelles personnalisées ne semble être mentionné que dans JIRA (http://jira.springframework.org/browse/SPR-5812, et ils l'ont aussi suggéré comme une solution de contournement pour d'autres problèmes) – axtavt

+0

, Merci beaucoup! –

Questions connexes