2013-03-08 2 views
2

У меня есть очень маленькая проблема, на которую я не мог найти ответа даже после Googling довольно давно.Как использовать контекстный параметр, определенный в web.xml в диспетчерском сервлете?

Как использовать контекстный параметр, определенный в web.xml в сервлет диспетчера?

В моей web.xml, я определил это так:

<context-param> 
    <param-name>root.path</param-name> 
    <param-value>/root</param-value> 
</context-param> 

я могу получить доступ к нему в моем классе Java с помощью следующих строк кода:

String rootPath = sce.getServletContext().getInitParameter("root.path");

Однако , Я не вижу способа использовать это значение в сервлет диспетчера. Я хочу использовать переменную для/root в приведенном ниже случае, чем само значение.

<bean id="propertyConfigurer" 
     class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" 
     p:location="file:/root/main.properties" /> 

Любая помощь очень ценится.

спасибо.

+0

У меня есть вопрос здесь. Какую цель решает этот контекст-пара? Вместо этого вы можете экпортировать эту переменную где угодно в переменной окружения или иначе. Здесь, в одном месте, вы объявляете переменную и другое место, на которое вы ссылаетесь. Оба являются внутренними не похожими на экстернализацию. –

+0

Мне не очень приятно прибегать к переменной окружения. Я хочу сохранить свой файл свойств из класса pathpath по соображениям безопасности (для хранения паролей и т. Д.) И будет ссылаться на него в нескольких местах. Поэтому я планирую определить переменную контекста и использовать ее в другой конфигурации xmls. – James

+0

Я хотел бы дать еще одно предложение. Вы должны сохранить значение «root.path» в файле свойств, а затем решить, где вы хотите его выбрать. –

ответ

3

Попробуйте использовать

<bean id="propertyConfigurer" 
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" 
    p:location="file:/#{contextParameters.root.path}/main.properties" /> 

Это создаст проблему, если мы даем имя как «root.path», вместо того, чтобы дать имя как «root_path»

+0

Awesome! Оно работало завораживающе. Нигде я не видел такого рода использование после нескольких часов поиска в сети. Спасибо! – James

Смежные вопросы