2011-01-18 4 views
0

Я надеюсь, что вы поможете мне с моей простой проблемой.Ajax запрос через DispatcherServlet

У меня настроено приложение весны mvc, которое было настроено из простого приложения jsf. Я использую библиотеки стилей.

У меня есть контроллер, и он обрабатывает запрос от welcome.do запросов и ViewResolver находит по правилу с префиксом/ui/и postfix .xhtml. Простая и общая используемая конфигурация.

@RequestMapping ("/ *. Do") public void actionDo() { logger.debug ("invoked"); } Первые запросы обрабатываются corectly, но когда я генерировать Ajax запрос от приветствия формы до некоторой SessionBean, она генерирует предупреждение:

[2011-01-18 21:28:28,442] org.springframework.web.servlet.DispatcherServlet.doService DispatcherServlet with name 'springDispatcher' processing POST request for [/prime/ui/welcome.do] 
[2011-01-18 21:28:28,443] org.springframework.web.servlet.PageNotFound.noHandlerFound No mapping found for HTTP request with URI [/prime/ui/welcome.do] in DispatcherServlet with name 'springDispatcher' 

Таким образом, он пытается найти вид по имени /ui/welcome.do и не может, поскольку запрос ajax не соответствует правилам обработки моего запроса. Должен ли DispatcherServlet обрабатывать запросы ajax или нет?

Я думаю, что это очень распространенная проблема, и ее можно решить просто, но я не знаю, как это сделать. без Spring MVC все работает отлично. Итак, можете ли вы рассказать о моих хороших практиках для передачи запросов ajax через DispatcherServlet?

Часть моего файла web.xml.

<servlet> 
    <servlet-name>Faces Servlet</servlet-name> 
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>*.jsf</url-pattern> 
</servlet-mapping> 

<servlet> 
    <servlet-name>springDispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>springDispatcher</servlet-name> 
    <url-pattern>*.do</url-pattern> 
</servlet-mapping> 

Спасибо!

+0

звучит очень странно - почему весна mvc И jsf? к чему относится сервлет диспетчера, и к чему относится сервлет jsf. – Bozho

+0

, потому что в сетках есть много хороших компонентов. Использует ли Spring mvc и jsf библиотеки нечетные? Мой диспетчерServlet сопоставлен с * .do шаблоном и сервом ssf, сопоставленным с * .jsf. Я обновляю тему с помощью части web.xml –

ответ

0

Ваш запрос AJAX отправляется как POST-запрос, вам нужно добавить HTTP-метод в свою аннотацию @ RequestMapping, например @RequestMapping (value = "/ *. Do", method = RequestMethod.POST) , Если значение «method» в аннотации опущено, по умолчанию используется RequestMethod.GET.

0

Вы используете jsf для обработки слоя презентации; почему вы используете весенний mvc? Вы должны использовать один из них: попробуйте использовать только серб.

+0

Можете ли вы объяснить, почему OP должен использовать только один из них? – ASGM

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