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



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

nameList=john,smith,junior

从bean定义文件中,我希望始终提取列表中的第一项。在这种情况下,我会提取"john"。

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

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

这显然给了我完整的清单。

我试图使用以下方法来获取名称列表中的第一个项目,但遇到了一个错误:

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

错误是:

BeanExpression异常:异常解析失败:解析有效表达式后,表达式中仍有更多数据:"mma(,)"

我看过《Spring in Action》一书,也看过Springs网站上的Spring spEL文档。我也在谷歌上搜索了很长一段时间。不幸的是,大多数代码示例都是在代码中完成的,而不是在spring定义文件中。如有任何协助,我们将不胜感激。

在您的示例中,您正在将"nameList"属性读取为字符串(而不是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:读取集合的属性文件

最新更新