2012-01-21 3 views
0

У меня проблема с Spring 3.0.7. Сопоставление запросов и реализация темы Spring.Весенний запрос Сопоставление и темы

Мои контроллеры реализуются следующим

@ Controller 
@RequestMapping(value="myUrl") 
Public MyControllerClass 

@RequestMapping(Method=requestMethod.GET) 
Public myGetHandler(){ 
} 

Так URL с http://myApp/myUrl обрабатывается и все хорошо.

темы активируются по ссылке ссылке это

<a href="?theme=mytheme"/> 

и пружинной конфигурации для темы является

<bean id="themeChangeInterceptor" class="org.springframework.web.servlet.theme.ThemeChangeInterceptor"> 
    <property name="paramName" value="theme" /> 
</bean> 

Так что, если я нахожусь на странице myUrl и Я нажимаю эту ссылку, тема загружается и myGetHandler также вызывается.

однако

если добавить параметр в мой URL

/myUrl?someParm=somevalue 

теперь мой контроллер работает, как и раньше, и я могу получить доступ к параметру, но нажав на ссылку направления (см HREF выше), для этого страница выглядит так:

/myUrl?theme=myTheme 

вызывает исключение и не загружается страница или тема. Я отправлю трассировку стека позже, но она предложила проблему в контроллере (а не в теме перехватчика).

Как я могу сопоставить свой контроллер, чтобы работали темы и параметризованный URL? В идеале я думаю, что хочу изменить свое сопоставление запросов, чтобы обрабатывать только мой параметризованный URL-адрес и ничего больше?

Я попытался изменить свое отображение запроса на

@RequestMapping(value="myUrl",params = "someParam=someValue") 

В то время как это работает для связей с моими параметрами он не для ссылки темы.

+0

Это поможет, если вы уточнили, что «нажатие на ссылку темы вызывает сбой». Каков URL ссылки? И что происходит, когда вы нажимаете на нее? Отправляйте полную трассировку стека и соответствующий код, если в коде присутствует исключение. –

+0

Уточнено условие ошибки. Я отправлю трассировку стека позже – stimpy

ответ

1

Мое предположение тогда в случае, если url с параметрами, нажмите на <a href="?theme=mytheme"/> Казус двойной "?" в адресе назначения, например /myUrl?someParm=somevalue?theme=mytheme.

Вы должны использовать что-то вроде c: url или javascript для создания URL-адреса только с одним? и & в качестве параметра детектора

+0

Тема url указана весной. Я не могу его изменить. Он перехватывается перехватчиком темы. Я проверю журнал отладки и подтвержу, но, похоже, что когда перехватчик темы срабатывает, он «обновляет» существующий URL-адрес – stimpy

Смежные вопросы