给出属性文件中的内联列表:
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定义文件中完成的。对此的任何帮助将不胜感激。
答案 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]}" />