Spring MVC @RequestMapping ne fonctionne pas
J'ai un étrange scénario dans lequel mon contrôleur n'est pas appelée à moins que j'ai la carte le répartiteur servlet /* web.xml. J'ai défini un contrôleur avec un RequestMapping:
@Controller
public class UserController {
@RequestMapping(value = "/rest/users", method = RequestMethod.GET)
public ModelAndView getUsers(HttpServletRequest request) throws RestException {
...
}
}
Et un contexte d'application:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">
<context:component-scan base-package="com.test.rest.controller" />
Enfin, c'est mappée dans web.xml:
<servlet>
<servlet-name>rest-servlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/restContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>rest-servlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
Cela fonctionne comme prévu c'est à dire que je peux faire des demandes de /le reste/utilisateurs. Cependant si je change le web.xml cartographie:
<servlet-mapping>
<servlet-name>rest-servlet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
- Je obtenir un MVC erreur:
AVERTIR servlet.PageNotFound: Aucune correspondance trouvée pour la requête HTTP avec l'URI
[/repos/users] dans DispatcherServlet avec le nom "rest-servlet'.
Il semble vraiment étrange parce que l'erreur indique que la demande est mappé à la dispatcher-servlet, pourtant, la seule chose qui a changé, c'est la servlet de cartographie.
Quelqu'un d'autre a rencontré ce?
OriginalL'auteur | 2012-04-20
Vous devez vous connecter pour publier un commentaire.
Répartiteur de la servlet est le principal servlet de Spring MVC. - Il gérer tous demande de, venir à votre demande, et en utilisant son propre moteur de routage envoi aux Contrôleurs. Si vous la changez pour
Ensuite, votre demande doit être comme ceci
rest/rest/users
Le modèle commun - permettre l'envoi de servlet pour traiter toutes les requêtes entrantes (première configuration est valide)
Vous pouvez définir un groupe de <url-pattern> servlet déclaration. Dans votre scénario, vous pouvez mapper Spring MVC /repos et votre contrôleur /utilisateurs
Eu ... il a le sens parfait maintenant, merci pour votre aide
Qu'entendez-vous par "carte Spring MVC /repos"? Tu veux dire que le répartiteur de la servlet? Son contrôleur dirait qu'il utilise Spring MVC, donc je suis un peu confus sur votre distinction. J'ai un problème similaire, avec moi-même.
Je préfère servir GWT de
/app/rpc/*
et/app/int/rpc/*
oùint
sont internes (après connexion) du cpr qui peut facilement être clôturé avec un Ressort de Sécurité de l'URL de la règle.OriginalL'auteur Anton