載入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操作。
留言
發佈留言