Spring MVC - Cartographie Contrôleur d'Url à l'aide d'Annotations

Je vais avoir des problèmes actuels de la configuration de mon Ressort du Contrôleur de la carte d'Url spécifiques, et j'ai un assez simple scénario, qui je pense, devrait être de travail:

Je suis la configuration de ma classe de Contrôleur à l'aide d'annotations, et elle se présente comme suit:

@Controller
@RequestMapping(value = "/question/**")
public class QuestionController 
{

    /**
     * Method to build users questions list
     * 
     * @param request
     * @param response
     * @return
     * @throws Exception
     */
    @RequestMapping("/list")
    public ModelAndView list(HttpServletRequest request, HttpServletResponse response) throws Exception{
        //Display Questions List
    }
}

Il n'y a pas d'autre configuration de la manette, j'ai simplement le <mvc:annotation-driven/> de la configuration et de la <context:component-scan>.. de configuration dans mon webmvc de config, de sorte que le contrôleur est automatiquement détecté.

Maintenant, lorsque je navigue à /question/list les applications ne parvient pas à trouver la ressource et je reçois un ResourceNotFound erreur. Cependant, Si je navigue à /question/question/list l'application charge la page je m'attends correctement.

Toutes les idées de pourquoi il en est dirigeant de la méthode à l'aide de /question/question/list?


Après cela, j'ai essayé d'ajouter la configuration de mon webmvc config de force tous les RequestMappings pour utiliser les paramètres alwaysUseFullPath=vrai, je l'ai fait comme suit:

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" p:order="3">
        <property name="alwaysUseFullPath" value="true" />
    </bean>

Ce moment, lorsque je navigue à /question/liste il ne parvient toujours pas à charger la page, mais les journaux montrent que le Printemps est au moins l'identification du Contrôleur, mais seulement à défaut de trouver la méthode (avant qu'il ne soit pas encore trouver le Contrôleur en fonction de l'URL):

2011-08-09 18:02:27,885 [http-8080-3] DEBUG org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping - Matching patterns for request [/question/list] are [/question/**/list/, /question/**/list, /question/**/, /question/**]
2011-08-09 18:02:27,886 [http-8080-3] DEBUG org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping - Mapping [/question/list] to handler 'com.tmm.enterprise.microblog.controller.QuestionController@143c423'
2011-08-09 18:02:27,886 [http-8080-3] DEBUG org.springframework.web.servlet.DispatcherServlet - Last-Modified value for [/microblog/question/list] is: -1
2011-08-09 18:02:27,886 [http-8080-3] DEBUG org.springframework.web.servlet.DispatcherServlet - DispatcherServlet with name 'microblog' processing GET request for [/microblog/question/list]
2011-08-09 18:02:27,886 [http-8080-3] DEBUG org.springframework.web.servlet.handler.SimpleMappingExceptionResolver - Resolving exception from handler [com.tmm.enterprise.microblog.controller.QuestionController@143c423]: org.springframework.web.servlet.mvc.multiaction.NoSuchRequestHandlingMethodException: No matching handler method found for servlet request: path '/list', method 'GET', parameters map[[empty]]
2011-08-09 18:02:27,886 [http-8080-3] DEBUG org.springframework.web.servlet.handler.SimpleMappingExceptionResolver - Resolving to view 'resourceNotFound' for exception of type [org.springframework.web.servlet.mvc.multiaction.NoSuchRequestHandlingMethodException], based on exception mapping [.NoSuchRequestHandlingMethodException]
2011-08-09 18:02:27,887 [http-8080-3] DEBUG org.springframework.web.servlet.handler.SimpleMappingExceptionResolver - Exposing Exception as model attribute 'exception'

Il me semble que c'est relativement simple, chose que je suis en train de réaliser dans le câblage d'un Contrôleur à une URL en utilisant les annotations, mais il ne fonctionne pas correctement - est-ce quelqu'un venir à travers cette ou voir des grossières erreurs de ma part?


Mise à JOUR

J'ai fait quelques progrès dans mes enquêtes.

Dans mon web.xml -je définir le mappage des servlets comme suit:

<servlet-mapping>
        <servlet-name>microblog</servlet-name>
        <url-pattern>/question/*</url-pattern>
    </servlet-mapping>

Si je supprime cette servlet cartographie, (j'en ai encore un servlet-mapping que les cartes de tous les .html à la même servlet) et changer l'URL que j'utilise /question/list.html puis il travaille (aussi-je changer le niveau de la méthode de cartographie de la @RequestMapping annotation sur mon list() méthode dans la question contrôleur de /list.html).

En résumé:

  1. J'ai servlet cartographie /question le contexte web

  2. J'ai une autre cartographie de /question à la QuestionController

  3. J'ai un niveau de la méthode de cartographie pour ma liste méthode de /list

Maintenant, je ne veux pas que mon Url à la fin de .code html pour ces cas - personne ne sait comment je peux contourner ce problème? Il semble que peut-être le servlet-mapping des bandes correspondant à la /question chaîne à partir de l'URL (donc /question/list pas de travail, mais /question/question/list de travail)

set <url-pattern>/</url-pattern> pour les url sans html
Si j'utilise que ça re-dirige toutes mes images, css, etc pour le contrôleur, il ne parvient pas à les trouver (toutes mes images sont dans /images/ etc..) - de sorte que quand je charge la page, il n'y a pas d'images ou de style css. Des idées comment je peux carte juste l'Url de la commande sans avoir à dupliquer le chemin dans l'URL?
Déplacer vos fichiers vers le dossier ci-dessus, pas dans le dossier WEB-INF.
toutes mes excuses, j'ai été incorrect - mes images, css, etc sont déjà au niveau du répertoire ci-dessus WEB-INF. Des idées pourquoi quand j'ajoute <url-pattern>/</url-pattern>, et naviguez jusqu'à la page pas de style/images apparaissent-elles?
oh, utilisez <mvc:les ressources de la cartographie="/ressources/**" location="/ressources/" />

OriginalL'auteur rhinds | 2011-08-09