我有一些常量,如 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,我可以读取正确的值,因此这些值设置正常。
我究竟做错了什么?