如何在 Struts 2 工厂类中获取 ServletContext



要访问 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属性并以这种方式设置它不是最好的方法。

有没有更好的方法?!

这不是最好的,而且是错误的,因为如果您尝试将此类工厂与 struts2 配置一起使用,您可能会遇到问题。servlet 上下文在初始化 struts2 之前是独立启动的,因此您不能使用需要启动框架的 struts2 api。

如果您需要在启动struts2 时初始化应用程序,最好的方法是在调度程序初始化事件上。 查看此答案,您应该如何实现调度程序侦听器。

以下是侦听调度程序初始化事件时构造对象的顺序:

15:27:50  INFO (org.apache.struts2.spring.StrutsSpringObjectFactory:42) - ... initialized Struts-Spring integration successfully
!!! MyBean !!!
!!! init !!!
jul 18, 2013 3:27:51 PM org.apache.catalina.startup.HostConfig deployDirectory
!!! dispatcherInitialized !!!

相关内容

  • 没有找到相关文章

最新更新