載入tiles 前的插入,以達成動態產生tiltle

Tiles 的模塊真的很好用,但如何達到動態產生tilte,並使用Spring來抓取資料,這段之前很頭痛,終於找到解法

首頁修改Tiles,加入preparer

<definitionname="member.index"extends="basic" preparer="PlatFormViewPreparer">

    <put-attributename="title"value="首頁"/>

    <put-attributename="content"  value="/WEB-INF/jsp/demo/index.jsp"/>

</definition> 

自行寫一個PlatFormViewPreparer.java,若有Package name也要加上去

PlatFormViewPreparer.java 他必須繼承:ViewPreparerSupport

publicclass PlatFormViewPreparer extends ViewPreparerSupport 

覆寫 execute的方法,可以透過ServletUtil取得ServletContext,再透過Servletcontext和WebApplicationContext來取得Spring 物件,就可以自由操作Spring的功能,另外回再透過,AttributeContext 的 arg1,來將資料傳出去,而這個title需要與jsp樣內要換的名稱相同。

@Override

publicvoid execute(TilesRequestContext arg0, AttributeContext arg1) throws PreparerException {

     ServletUtil.getServletContext(arg0.getApplicationContext());

     WebApplicationContext springContext = WebApplicationContextUtils.getWebApplicationContext(ServletUtil

          .getServletContext(arg0.getApplicationContext()));

     memberService = springContext.getBean(MemberService.class);

     arg1.putAttribute("title", new Attribute(memberService.getMemberName()));

}

 

這個功能主要可以用來seo操作。

留言

此網誌的熱門文章

nginx 上安裝 TWCA 憑證