Spring MVC - Aucune correspondance trouvée pour l'URI de la requête
Il y a beaucoup de questions concernant cette erreur sur PileOverflow, et j'ai essayé les solutions les plus pertinents, sans succès. Voici mon problème.
Je suis en train de carte cette demande: /user/{userId}
où userId
est une Chaîne de caractères. Je suis capable de gérer des demandes pour de /user
avec l'annoté de la classe et Printemps configuration:
UserController.java
@Controller
@RequestMapping("/user")
public class UserController {
private static final Logger log = Logger.getLogger(UserController.class.getName());
@RequestMapping(method=RequestMethod.GET)
public @ResponseBody String info() {
log.debug("mapping succeeded!");
return "<H1>foo</H1>";
}
}
web/WEB-INF/user-servlet.xml
<?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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:component-scan base-package="com.example"/>
</beans>
web.xml
<servlet>
<servlet-name>user</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>user</servlet-name>
<url-pattern>/user/*</url-pattern>
</servlet-mapping>
Puis, quand je demande /user
2011-01-14 15:47:41,942 DEBUG [com.example.rest.UserController] (http-11080-1) mapping succeeded!
Maintenant faire quelque chose d'intéressant. J'ai modifier mon code pour les éléments suivants:
@Controller
@RequestMapping("/user")
public class UserController {
private static final Logger log = Logger.getLogger(UserController.class.getName());
@RequestMapping(value="/{userId}", method=RequestMethod.GET)
public @ResponseBody String info(@PathVariable String userId) {
log.debug("mapping succeeded! userId=" + userId);
return "<H1>foo</H1>";
}
}
J'ai le redoutable No mapping found...
(main) Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@36598d00: defining beans [userController,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor]; root of factory hierarchy
(main) instantiating UserController
(main) Mapped URL path [/user/*] onto handler 'userController'
(main) Mapped URL path [/user/*.*] onto handler 'userController'
(main) Mapped URL path [/user/*/] onto handler 'userController'
...
(http-11080-1) No mapping found for HTTP request with URI [/user] in DispatcherServlet with name 'user'
(http-11080-1) No mapping found for HTTP request with URI [/user/foo] in DispatcherServlet with name 'user'
(http-11080-1) No mapping found for HTTP request with URI [/user/] in DispatcherServlet with name 'user'
Ce que je fais mal?
OriginalL'auteur purecharger | 2011-01-14
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas l'habitude d'inclure le véritable chemin de la servlet que votre répartiteur de la servlet est mappée dans le cadre de votre demande de cartographie. La demande de cartographie est relatif à l'expéditeur. Dans l'dégénérer le premier cas, le répartiteur est assez intelligent pour comprendre ce que tu voulais dire, mais quand vous commencez à ajouter des variables de chemin d'accès qui se décompose. Vous devriez être en mesure d'accéder à
/user/user/foo
et obtenir ce que vous cherchez, avec votre configuration actuelle.OriginalL'auteur Affe