给定属性文件中的内联列表:
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:读取集合的属性文件