spEL в файле определения бина: как получить значение в встроенном списке? - PullRequest
2 голосов
/ 06 января 2012

Учитывая встроенный список из файла свойств:

nameList=john,smith,junior

Из файла определения компонента, я хочу всегда извлекать первый элемент в моем списке.В этом случае я бы извлек "john".

Используя Spring Framework 3.0.4.RELEASE, мое свойство bean выглядит следующим образом:

<property name="mySingleName" value="${nameList}" />

Это, очевидно, дает мне весь список.

Я попытался использовать следующее, чтобы получить первый элемент в списке имен, но встретил ошибку:

<property name="mySingleName" value="#{${nameList}[0]}" />

Ошибка:

BeanExpressionException: Сбой при синтаксическом анализе исключения: После синтаксического анализа действительного выражения в выражении есть еще больше данных: 'comma (,)'

Я посмотрел в книге "Spring In Action" иПосмотрел документацию Spring spEL на веб-сайте Springs.Я также немного погуглил.К сожалению, большинство примеров кода выполняется в коде, а не в файлах определения Spring.Любая помощь в этом будет принята с благодарностью.

1 Ответ

2 голосов
/ 06 января 2012

В вашем примере вы читаете свойство "nameList" как String (не как java.util.List). Сначала вам нужно преобразовать его в список:

<bean id="listOfNames" class="org.springframework.util.StringUtils" factory-method="commaDelimitedListToSet">
    <constructor-arg type="java.lang.String" value="${nameList}"/>
</bean>

и затем вы можете применить SPeL к нему:

<property name="mySingleName" value="#{listOfNames[0]}" />

похожая проблема / решение здесь: Spring: чтение файлов свойств форм коллекций

...