3

我有一些常量,如 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,我可以读取正确的值,因此这些值设置正常。

我究竟做错了什么?

4

1 回答 1

0

您可以使用

<s:property value="#attr.appName"/> - <s:property value="#attr.appVer"/>

或者

${appName}  -  ${appVer}
于 2014-04-26T05:46:13.613 回答