如何在运行期(runtime)动态更改tiles definition的属性

在做web应用开发时,经常有需求需要根据配置的参数来动态的更改页面的布局或头部和尾部,实现的框架有很多,比如说tiles,sitemesh;在这里我讲一下如何在运行期动态更新tiles的definition;

需求是:在应用中需要根据平台参数来展示不同页头页脚,在tiles中配置了页头的definition,如下:
<definition name="header"
template="/WEB-INF/jsp/common/header.jsp" />


如今需要根据平台的标识来动态指定header.jsp,如电信进来指定为114header.jsp,移动进来指定为1860header.jsp,实现的办法是配置definition的prepare属性,此属性的值为实现ViewPreparer,在此实现类得到平台标识,并根据平台标识设置相应的header jsp(平台标志位在web应用启动的时候设置入web上下文,如session中)

实现类操作如下:

public class PlatFormViewPreparer implements ViewPreparer {

/**
* 功能:
*
* @param tilesContext
* @param attributeContext
*/
public void execute(TilesRequestContext tilesContext,
AttributeContext attributeContext) {
String platformIdString = (String) SessionUtil.getlVar("PLATFORMID");
if (platformIdString == null){
platformIdString = "";
}
attributeContext.setTemplateAttribute(new Attribute("/WEB-INF/jsp/common/"+platformIdString+"header.jsp"));

}
}


重新配置header definition

<definition name="header"
template="/WEB-INF/jsp/common/header.jsp" preparer="PlatFormViewPreparer "/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值