如何让web.xml参数不在JSF生命周期之外和Servlet之外? 我能找到的只是与servlet,jsf请求或Spring或Struts等框架的特定方法有关。
从纯Java EE中获取web.xml配置是否很难?
实践中
getServletContext().getInitParameter("ContextParam");
FacesContext.getCurrentInstance().getExternalContext().getInitParameterMap();
都不可用。
答案 0 :(得分:0)
创建一个ServletContextListener和一个类,例如AppContext
带有一些staitc字段
class AppContext {
static String param = null;
public satitc void setParam(String p) {
param = p;
}
public satitc getParam() {
return param;
}
}
在方法contextInitialized中,阅读参数并将其设置为AppContext
@Override
public void contextInitialized(ServletContextEvent arg0) {
AppContext.setParam(arg0.getServletConext().getInitParameter("ContextParam"));
}
在任意位置使用AppContext#getParam()
方法。
答案 1 :(得分:0)
当您的应用程序加载时,您可以从init参数获取此信息并保存以便在其他时间使用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>
所以你把它存储在你想要的地方,作为属性,全局变量,或者任何地方。