2014-10-01 76 views
-1

如何獲取JSF生命週期之外和Servlet之外的web.xml參數? 我能找到的所有東西都與servlet,jsf請求或者像Spring或Struts這樣的框架的特定方法有關。來自非servlet的web.xml參數,外部JSF生命週期

在純Java EE中難以從web.xml中獲取配置嗎?

在實踐

getServletContext().getInitParameter("ContextParam"); 
FacesContext.getCurrentInstance().getExternalContext().getInitParameterMap(); 

都無法使用。

+0

在什麼環境下你想要做到這一點? – kolossus 2014-10-02 03:00:29

回答

0

創建ServletContextListener和一類,爲exampel AppContext一些staitc領域

class AppContext { 
    static String param = null; 

    public satitc void setParam(String p) { 
     param = p; 
    } 

    public satitc getParam() { 
     return param; 
    } 
} 

在該方法中contextInitialized讀取參數SND它們設置爲您AppContext

@Override 
public void contextInitialized(ServletContextEvent arg0) { 
    AppContext.setParam(arg0.getServletConext().getInitParameter("ContextParam")); 
} 

使用方法AppContext#getParam()哪裏你要。

Here a small tutorial on this topic

0

當你的應用程序加載,你可以從你的初始化參數得到這個信息,並保存使用的ServletContextListener,這樣的事情在其他時間使用:

public class TestListener implements ServletContextListener { 

    @Override 
    public void contextInitialized(ServletContextEvent servletContextEvent) { 
     String yourVariable = servletContextEvent.getServletContext().getInitParameter("yourParameter"); 
     //Some code.. 
    } 
} 

在web.xml定義這個監聽器:

<web-app ...> 
    <listener> 
    <listener-class> 
      com.fullanem.TestListener 
     </listener-class> 
    </listener> 
</web-app> 

在web.xml中定義的參數太多:

<context-param> 
    <description>This is a context parameter example</description> 
    <param-name>yourParameter</param-name> 
    <param-value>Your value</param-value> 
    </context-param> 

所以你將它存儲在你想要的地方,作爲屬性,全局變量或任何地方。