2016-04-16 93 views
1

卡住了奇怪的概率。我将ServletContext添加到我的类(定义为@Service),并且它始终返回null。试过@Autowired和没有它。Spring ServletContext返回null

此外,我在应用程序启动时没有收到任何错误。 只有当我打电话 '的ServletContext.getRealPath( “/ WEB-INF /”)' null值

这就是我想要使用它的类:

@Service 
public class MyFactory implements ServletContextAware { 

    @Autowired 
    ServletContext servletContext; 

    public void setServletContext(ServletContext servletContext) { 
     this.servletContext = servletContext; 
    } 

    private someMethod(){ 
     servletContext.getRealPath("/WEB-INF/"); //this return null 
    } 

} 

PS servletContext本身null,不是.getRealPath("/WEB-INF/")方法

+0

你当然让Spring为你实例化类,而不是自己调用'new MyFactory()',对吗? ''someMethod()'在* autowiring完成之后被调用,对吧? – Andreas

+0

是的,都是对的。 – user1935987

回答

1

您的问题描述很混乱。你说你加ServletContext返回空(@Autowired或不),使得它听起来像servletContext的值是空的,当你的措辞和代码示例否则似乎表明getRealPath()返回null。

如果servletContext为空,则servletContext.getRealPath()将导致NullPointerException

如果servletContext不为空,则servletContext.getRealPath()将成功,但可能返回null。的getRealPath()

引述的Javadoc:

该方法返回null如果servlet容器无法转换给定虚拟路径到真正路径。

所以,如果/WEB-INF/是在尚未解开一个.war文件,有没有真正的路径,getRealPath()将返回null。

+1

对不起,你说得对,问题描述不够清楚。 servletContext为null。 – user1935987

相关问题