2012-01-05 8 views
2

ファイル:Bean定義ファイルから BeEL定義ファイルのspEL:インラインリストの値を取得するには?プロパティからインラインリストを考えると

nameList=john,smith,junior 

が、私はいつも私のリストの最初の項目を抽出したいです。この場合、私は 'ジョン'を抽出するでしょう。次のように春のフレームワーク3.0.4.RELEASE、私のBeanのプロパティを使用して

に見えます:

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

は、これは明らかに私の全体のリストを与えます。

私は名前のリストの最初の項目を取得するには、次を使用しようとしましたが、エラーと会った:

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

エラーだった:

BeanExpressionException:Exception parsing failed: After parsing a valid expression, there is still more data in the expression:'comma(,)'

私が見てきました「Spring in Action」を予約し、Springのspel documentation on SpringsのWebサイトを見てきました。私はまた、かなりのためにグーグルしている。残念なことに、ほとんどのコード例はコードで実行され、スプリング定義ファイルでは実行されません。これに対する援助は非常に感謝しています。

答えて

2

あなたの例では、 "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: Reading collections form property files

+0

はインライン化するとよいでしょうあなたが余分な豆を必要としないように、StringUtilsの使用、あなたは思いませんか? – iwein

+0

私は昨日同じ結論に達しましたが、それでも私は面倒です。私は他の解決策を見たいと思っていました。私はiweinに同意します。#{(LIST)listOfNames [0]}のようなものを見るのは良いことです。ここで、spELはインラインリストを自動キャストし、その内容を取り出せるようにします。ありがとうございますtolitius。 – Gurgalax

関連する問題