要在支柱2工廠類訪問ServletContext
(例如StrutsTextProviderFactory
)的Struts 2:獲取在工廠類ServletContext的
我用下面的代碼:
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'中刪除靜態,'getTextProvider'方法中的'null'將被刪除。 – home
使它成爲靜態是我發現將此參數傳遞給'getTextProvider'的唯一方式。在servelt開始時調用'contextInitialized',在struts開始時調用'SabaStrutsTextProviderFactory'。每次創建'CustomStrutsTextProviderFactory'的新實例。 –