2017-09-25 2 views
0

J'essaie de créer une application en utilisant Angularjs pour l'interface utilisateur, y compris angulaire-route pour la modularité, puis faire des appels à Spring MVC pour appeler à tour de rôle DAO pour effectuer quelques base CRUD. Le problème est que les deux travaillent en même temps. Jusqu'à présent, tout ce que je fais provoque l'un ou l'autre à 404.Spring MVC avec Angularjs, gestion correcte des pages de route angulaire

Je peux me tromper, mais je pense que le problème est enraciné dans web.xml, et plus précisément le modèle d'URL. Par exemple, si je mets le mappage comme ceci:

<servlet-mapping> 
    <servlet-name>MyApp</servlet-name> 
    <url-pattern>/obviousJunk</url-pattern> 
</servlet-mapping> 

Ensuite, les pistes d'application, je peux visualiser mes pages html, et voir comment tous mes <div> s et <table> s et <img> s regardent tous assez. Ces pages ont des URLs de la forme http://localhost:8080/MyApp/#!/home ou http://localhost:8080/MyApp/#!/categoryList et ainsi de suite, c'est-à-dire, tous ayant le "#!" modèle.

Avec cette <url-pattern>, bien sûr, ma servlet ne peut pas être invoquée. Cependant, si je change ci-dessus à:

<servlet-mapping> 
    <servlet-name>MyApp</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

et a frappé http://localhost:8080/MyApp/services/category/list, je peux exécuter avec succès cette méthode: « # »

@RequestMapping(value="/services/category/list", method=RequestMethod.GET) 
public @ResponseBody String listCategory() { 
    return "Hello, World"; 
    // TODO: modify this method to make a DAO call and return a list of categories 
} 

Mais toutes mes pages avec le soudainement aller 404, car il n'y a pas de méthode de contrôleur autour de les servir, il ne devrait pas y avoir.

Je pensais que si je en guise d'introduction toutes les urls d'appels de service avec «/services/» (comme indiqué ci-dessus), alors je pourrais être en mesure de modifier mon web.xml comme si (avec et sans le *)

<servlet-mapping> 
    <servlet-name>MyApp</servlet-name> 
    <url-pattern>/services/*</url-pattern> 
</servlet-mapping> 

De même, j'ai modifié l'annotation @RequestMapping pour inclure et supprimer la partie "/ services". Non, je peux revoir mes pages, mais le service appelle 404. La méthode du contrôleur n'est même jamais appelée. J'ai également noté quelques exemples d'ajouter ".do" aux appels de méthode de fin de service, et en faisant le <url-pattern>*.do</url-pattern> ci-dessus. Cela échoue également - le http://localhost:8080/MyApp/services/category/list.do donne 404, et la méthode de contrôleur n'est jamais appelée, même en ajoutant ".do" à la fin de la valeur @RequestMapping.

J'ai lu quelques autres questions ici sur l'exclusion de choses spécifiques de <url-pattern>, c'est-à-dire quelque chose avec "#!" en elle, mais les réponses tous disent que n'est pas possible. J'ai également brièvement essayé une méthode de faire rien avec @RequestMapping(value="/#!/**") et il n'a jamais été appelé (je soupçonnais que cela ne fonctionnerait pas, mais ça valait la peine d'essayer.)

Comment puis-je résoudre ce problème?

+0

La réponse est ici: http://forum.spring.io/forum/spring-projects/web/112412-spring-3-1-enablewebmvc-setting-alwaysusefullpath-property, arrivé à via ces questions et ses réponses : https://stackoverflow.com/q/11692837/241291. N'hésitez pas à fermer en double. – cobaltduck

Répondre