Ниже приведен контекст файла xml, где я определяю карту и ее элементы. Некоторые элементы на карте будут состоять из xpaths, где некоторая часть xpaths будет одинаковой. Я хочу создать переменные, которые будут представлять части этих xpaths, которые избыточны по всем элементам.
Я определил компонент с идентификатором и свойством и значением. Независимо от того, что я пытаюсь, я не могу ссылаться на ценность компонента. Все, что я когда-либо получаю, когда запрашиваю значение Map.get("devo"). Get ("error404CategoriesContainer") - "$ {errorContainer}". Я хочу, чтобы он дал мне "//div [@id = 'noResultsFeatures']//div [contains (@class, 'noResultsFeaturesContainer')]".
Боб, который я пытаюсь создать как переменную, начинается с <bean id = "errorContainer" Элемент карты, в котором я пытаюсь использовать его, - это элемент <entry key = "error404CategoriesContainer". Независимо от того, какие три вещи я стараюсь, я всегда получаю то же значение. Текстовое значение элемента на карте, а не текстовое значение переменной.
Я искал везде, но я не могу найти решение. Я попробовал символ # вместо символа $. Я пробовал разные способы определения компонента и пытаюсь "отбросить" компонент, но все это безуспешно. Может ли кто-нибудь привести меня к решению?
Вот содержимое xml файла
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd">
<bean id="errorContainer" class="java.lang.String">
<property name="error404CategoryContainer" value="//div[@id='noResultsFeatures']//div[contains(@class,'noResultsFeaturesContainer')]"/>
</bean>
<util:map id="devo">
<entry key="FourOFour">
<util:map>
<entry key="error404FeaturedCategoriesHeader" value="//h2[@id='noResultsFeaturesHeader' and contains(text(),'Featured Categories')]" />
None of these works – I only have one in the file at a time.
<entry key="error404CategoriesContainer" value="${errorContainer}" />
<entry key="error404CategoriesContainer" value="${errorContainer. error404CategoryContainer}" />
<entry key="error404CategoriesContainer" value="${error404CategoryContainer}" />
<entry key="error404CategoriesContainerLinks" value="//div[@id='noResultsFeatures']//div[contains(@class,'noResultsFeaturesContainer')][${1}]//ul//li" />
<entry key="error404CategoriesContainerLinkByCategoryAndLinkNumber" value="//div[@id='noResultsFeatures']//div[contains(@class,'noResultsFeaturesContainer')][${1}]//ul//li[${2}]//a" />
</util:map>
</entry>
</util:map>
Вам необходимо определить PropertySourcesPlaceholderConfigurer в контексте вашего приложения с помощью <context: property-placeholder.../>. В параметрах можно определить свойства как пары ключ-значение и обратиться к значениям с синтаксисом $ {key}.