Ajax-запрос через DispatcherServlet - PullRequest
0 голосов
/ 18 января 2011

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

Я настроил Spring mvc-приложение, которое было настроено из простого jsf-приложения.Я использую библиотеки Primefaces.

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

@ RequestMapping ("/ *. Do") public void actionDo () {logger.debug ("invoked");} Первые запросы обрабатываются в основном, но когда я генерирую 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>

Спасибо!

Ответы [ 2 ]

0 голосов
/ 16 апреля 2013

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

0 голосов
/ 30 января 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...