我有一些像APPVERSION,APPNAME和APPREV这样的常量,我想在我的Struts 2应用程序的每个页面上显示。
根据这些要求,我认为将信息介绍给servletContext并在部署应用程序时加载它会很棒。
我创建了一个实现ServletContextListener
的侦听器:
public class ApplicationInitListenerImpl extends GenericVsService implements ApplicationInitListener,ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent sce) {
}
@Override
public void contextInitialized(ServletContextEvent sce) {
ServletContext sc = sce.getServletContext();
sc.setAttribute("appVer",xxx.utils.VConstants.APPVER);
sc.setAttribute("appName",xxx.utils.VConstants.APPNAME);
sc.setAttribute("appRev",xxx.utils.VConstants.APPREV);
}
}
然后我在我的web.xml
听众中添加了
<listener>
<listener-class>xxx.listeners.ApplicationInitListenerImpl</listener-class>
</listener>
在我的Tiles模板中,我添加了:
<s:property value="#application.appName"/> - <s:property value="#application.appVer"/>
但我在这里什么都没得到。
如果我从Struts 2 Action中检索servletContext,我可以读取正确的值,因此值设置为ok。
我做错了什么?
答案 0 :(得分:0)
您可以使用
<s:property value="#attr.appName"/> - <s:property value="#attr.appVer"/>
或者
${appName} - ${appVer}