2012-11-18 82 views
1

我在新的Spring MVC 3應用程序中使用Tiles 2。 這是我的模板從Tiles調用控制器的更好方法是什麼?

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

和我的網頁

<definition name="engageStep1View" extends="baseLayout" > 
     <put-attribute name="title" value="" /> 
     <put-attribute name="body" value="/WEB-INF/jsp/private/engageStep1.jsp" /> 
     <put-attribute name="userInfo" value="/layout/userInfo" /> 
</definition> 

我加入tiles.xml定義下一行

<definition name="userInfoView" template="/WEB-INF/jsp/layout/userInfo.jsp" /> 

有一個更好的主意,enagageStep1打電話到控制器:

@RequestMapping(value = "/layout/userInfo") 
    public ModelAndView handleRequest(ModelMap model) { 

     ...... 
     MemberPrincipal memberPrincipal = (MemberPrincipal)authentication.getPrincipal(); 

     model.put("userName", memberPrincipal.getUserName()); 

     return new ModelAndView("userInfoView", "model", model); 
    } 

有什麼想法?

感謝

+0

更新:有一個更好的主意** userInfo **調用控制器: – Danilo

回答

0

它看起來像你的用戶信息控制方法提供了可能適用於您的整個應用程序/網站的信息。對於這種信息,您可以使用彈簧攔截器來填充當前屬性上下文中所需的信息。然後,userInfoView可以根據需要使用此信息,而無需引用userInfo控制器方法。

另一個類似的方法是用戶瓷磚視圖準備。

+1

感謝您的幫助,您正在使用userInfo用於多個頁面並顯示會話用戶的信息。 我會嘗試你的推薦 – Danilo

相關問題