【发布时间】:2012-01-15 05:33:32
【问题描述】:
我有一个 bean,我试图在 Web 应用程序启动时传递一个相对路径。它适用于绝对路径(在 eclipse 中运行 tomcat),例如 (C:/dev/workspace/project/src/main/webapp/WEB-INF/resource/)
但是,当我尝试将相对路径传递给它时,例如 WEB-INF/my_resource/ 它说找不到位置 C:/dev/eclipse/WEB-INF/my_resource/ 可能是因为tomcat 在eclipse 中运行。我怎样才能使这条路径相对,以便无论 web 应用程序的位置如何,它总是可以从运行它的任何 web 容器中获取?
我已经阅读到位以使用 servletconfig.getRelativePath(/),但不知道如何从我的 bean 中获取 servlet 配置,或者即使这是在 Spring 中正确的做法......请帮助
我的 bean 类和 bean 配置 xml 的源代码可以在下面找到
public class SuggestionIndexSearcher extends IndexSearcher {
private String indexSearcherType;
public SuggestionIndexSearcher(String type, String path){
super(path);
this.indexSearcherType = type;
}
...
}
bean 在 teh beans xml 中定义为...
<bean id="KMSearcherBean" class="com.hp.it.km.search.web.suggestion.SuggestionIndexSearcher">
<constructor-arg index="0" value="KMSearcher" />
<constructor-arg index="1" value="WEB-INF/resource/keyword" />
</bean>
【问题讨论】:
-
什么是
IndexSearcher,它与path有什么关系?似乎问题在于如何处理该字符串。 -
感谢您的回复。也许我不清楚......这可能是任何课程,它无关紧要。我的问题不是它进入类后发生了什么,也不是类扩展或对字符串做什么。我要问的是,在调用 super() 之前,我可以添加什么代码来将 path="/WEB-INF/my_resource/" 转换为 path=
"/WEB-INF/my_resource/ where =是tomcat或weblogic中webapp的文件系统位置,或者webapp可能在其中运行的任何应用服务器。即我需要找出 是什么? -
通过简单地将字符串更改为资源来修复。欢呼斯卡夫曼
标签: spring web-applications spring-mvc dependency-injection relative-path