2010-02-10 4 views
5

À partir du document officiel du printemps, Spring 3 MVC semble être un mappage de demande d'imbrication. http://static.springsource.org/spring/docs/3.0.0.RELEASE/spring-framework-reference/pdf/spring-framework-reference.pdf Dans la page 448, ils ont mentionné:Printemps 3 MVC Imbrication RequestMapping

@Controller 
@RequestMapping("/appointments") 
public class AppointmentsController { 
//... 
    @RequestMapping(value="/new", method = RequestMethod.GET) 
    public AppointmentForm getNewForm() { 
     return new AppointmentForm(); 
    } 
//... 
} 

(j'ai éliminé un code pour une meilleure lisibilité) Dans ce cas, ils ont fait valoir qu'une demande de /appoinments/new invoquera la méthode getNewForm. Cependant, cela ne fonctionne pas avec mon serveur Google App Engine local (bien que le serveur GAE fonctionne parfaitement avec le mappage qui n'est pas imbriqué). Je crée un contrôleur exemple comme ci-dessous:

@Controller 
@RequestMapping("/basic.do") 
public class HelloWorldController { 
    @RequestMapping(value="/hello", method=RequestMethod.GET) 
    public ModelAndView helloWorld() { 
     ModelAndView mav = new ModelAndView(); 
     mav.setViewName("basic/helloWorld"); 
     mav.addObject("message", "Hello World From Phuong!"); 
     return mav; 
    } 
} 

mais une demande de /basic.do/hello entraîne toujours une erreur 404.

Vous ne vous demandez pas si quelque chose ne va pas? J'utilise le mode piloté par annotation avec la demande *.do traitée par le ressort DispatchServlet.

Répondre

13

essayer cette

@Controller 
@RequestMapping("/basic") 
public class HelloWorldController { 
    @RequestMapping(value="/hello.do", method=RequestMethod.GET) 
    public ModelAndView helloWorld() { 
     ModelAndView mav = new ModelAndView(); 
     mav.setViewName("basic/helloWorld"); 
     mav.addObject("message", "Hello World From Phuong!"); 
     return mav; 
    } 
} 

et essayez avec l'basic/hello.do url

La raison est que /basic.do/hello ne va pas être traitée par votre servlet répartiteur que ce n'est pas une URL qui se termine par .Ne

BTW, les extensions .html sont plus agréables que .do, IMHO

+0

Vous êtes un génie. Merci beaucoup. –

+3

Et vous un exaggerator :) – flybywire

+9

Et aucune extension n'est plus belle que .html – cdeszaq

Questions connexes