2

给定属性文件中的内联列表:

nameList=john,smith,junior

从 bean 定义文件中,我想总是提取列表中的第一项。在这种情况下,我会提取“约翰”。

使用 Spring Framework 3.0.4.RELEASE,我的 bean 属性如下所示:

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

这显然给了我整个清单。

我尝试使用以下内容获取名称列表中的第一项,但遇到错误:

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

错误是:

BeanExpressionException:Exception parsing failed: 解析有效表达式后,表达式中还有更多数据:'comma(,)'

我查看了“Spring In Action”一书,并查看了 Springs 网站上的 Spring spEL 文档。我也google了很多。不幸的是,大多数代码示例都是在代码中完成的,而不是在 spring 定义文件中。对此的任何帮助将不胜感激。

4

1 回答 1

2

在您的示例中,您正在将“nameList”属性作为 String (而不是 a 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: Reading collections form property files

于 2012-01-06T06:20:09.270 回答