2010-11-15 49 views
2

我剛剛在我的Spring MVC 3應用程序中設置了Apache Tiles 2。使用Spring 3調用控制器從瓷磚模板

我創造了我的模板:

<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> 

和歡迎頁面:

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

而對於瓷磚的特性:

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

而且我的控制器:

@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; 
} 

它工作正常。

但我怎麼調用另一個控制器從模板文件內等說引入了menu.jsp 將調用控制器像這樣的:

@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; 
} 

任何想法?

感謝

回答

1

爲了所說的「菜單」控制器,你需要指定你的屬性「菜單」具有相應的URL,它必須映射到控制器(就像你一起文件歡迎)。

我可以建議使用.htm作爲視圖或.do等形式嗎? 沒有,如果您試圖顯示視圖或試圖映射請求等,很容易感到困惑。