Bean定义文件中的spEL:如何获取内联列表中的值?

时间:2012-01-05 20:51:26

标签: spring spring-el

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

nameList=john,smith,junior

从bean定义文件中,我想总是提取列表中的第一个项目。在这种情况下,我会提取'john'。

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

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

这显然给了我整个清单。

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

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

错误是:

  

BeanExpressionException:异常解析失败:解析有效表达式后,表达式中还有更多数据:'逗号(,)'

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

1 个答案:

答案 0 :(得分:2)

在您的示例中,您正在将“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: Reading collections form property files