坚持奇怪的概率。我将ServletContext添加到我的类(定义为@Service),它总是返回null。试过@Autowired和没有它。
此外,我在应用启动时没有收到任何错误。 我调用' servletContext.getRealPath(" / WEB-INF /")'
时只有空值这是一个我尝试使用它的课程:
@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
}
}
P.S servletContext
本身为空,而不是.getRealPath("/WEB-INF/")
方法
答案 0 :(得分:1)
您的问题描述令人困惑。你说你添加resources :users do
resources :posts do
resources :corrections
end
end
和它返回null(ServletContext
或不是),当你的措辞和代码使它听起来像@Autowired
的值为null示例否则似乎表明servletContext
返回null。
如果getRealPath()
为空,则servletContext
将导致servletContext.getRealPath()
。
如果NullPointerException
不为空,则servletContext
将成功,但可能将返回null。
引用getRealPath()
的javadoc:
如果servlet容器无法将给定的虚拟路径转换为真实的路径,则此方法返回
servletContext.getRealPath()
。
因此,如果null
位于尚未解压缩的.war文件中,则没有真正的路径,/WEB-INF/
将返回null。