【发布时间】:2017-07-30 13:25:06
【问题描述】:
在 Struts 2 工厂类中访问 ServletContext(例如 StrutsTextProviderFactory)
我使用了以下代码:
public class CustomStrutsTextProviderFactory extends
StrutsTextProviderFactory implements ServletContextListener{
private static String myConfig;
@Override
protected TextProvider getTextProvider(Class clazz) {
// I can read myConfig here !
}
@Override
public void contextInitialized(ServletContextEvent event) {
myconfig = event.getServletContext().getInitParameter("config");
}
}
它有效,但我认为定义一个 static 属性并以这种方式设置它不是最好的方法。
有没有更好的办法?!
【问题讨论】:
-
你为什么把它定义为静态变量?应该在没有静态修饰符的情况下工作......
-
如果我从
myConfig中删除静态将是null在getTextProvider方法中。使其成为静态是我发现将此参数传递给getTextProvider的唯一方法。contextInitialized在 servelt 启动期间被调用,SabaStrutsTextProviderFactory在 struts 启动期间被调用。并且每次创建CustomStrutsTextProviderFactory的新实例时。
标签: java servlets struts2 factory servlet-3.1