2010-11-15 20 views
2

Je viens de configurer Apache Tiles 2 dans mon application Spring MVC 3.Appel de contrôleur à partir d'un modèle de tuiles à l'aide de Spring 3

J'ai créé mon modèle:

<definition name="baseLayout" template="/WEB-INF/jsp/baseLayout.jsp"> 
     <put-attribute name="title" value="Template"/> 
     <put-attribute name="header" value="/WEB-INF/jsp/header.jsp"/> 
     <put-attribute name="menu" value="/WEB-INF/jsp/menu.jsp"/> 
     <put-attribute name="body" value="/WEB-INF/jsp/body.jsp"/> 
     <put-attribute name="footer" value="/WEB-INF/jsp/footer.jsp"/> 
    </definition> 

et une page d'accueil:

<definition name="welcome" extends="baseLayout"> 
     <put-attribute name="title" value="Welcome"/> 
     <put-attribute name="body" value="/WEB-INF/jsp/home.jsp"/>  
    </definition> 

Et les propriétés pour la dalle:

welcome.(class)=org.springframework.web.servlet.view.tiles2.TilesView 
welcome.url=welcome 

Et mon contrôleur:

@RequestMapping(value="/welcome", method=RequestMethod.GET) 
public ModelAndView home() { 
    logger.info("Welcome home yesssssss!"); 
    ModelAndView mav = new ModelAndView(); 
    logger.info("Loading Companies"); 
    mav.addObject("companys", companyService.loadCompanys()); 
    mav.setViewName("welcome"); 
    return mav; 
} 

Cela fonctionne très bien.

Mais comment puis-je appeler un autre contrôleur à partir du fichier de modèle comme dire menu.jsp qui appellera un contrôleur comme celui-ci:

@RequestMapping(value="/menu", method=RequestMethod.GET) 
public ModelAndView menu() { 
    logger.info("get MEnu"); 
    ModelAndView mav = new ModelAndView(); 
    logger.info("Loading menu"); 
    mav.addObject("menu", menu.get()); 
    mav.setViewName("menu"); 
    return mav; 
} 

Toute idée?

grâce

Répondre

1

Pour appeler le contrôleur « menu », vous devez spécifier le « menu » dans votre fichier de propriétés avec une URL correspondant, qui doit être mis en correspondance avec le contrôleur (comme vous l'avez fait pour l'accueil). Puis-je suggérer d'utiliser .htm pour les vues ou .do pour les formulaires, etc? Sans, il est facile d'être confus si vous essayez d'afficher une vue, ou vous essayez de mapper une demande, etc.