2

プロパティ ファイルのインライン リストを指定すると、次のようになります。

nameList=john,smith,junior

Bean 定義ファイルから、常にリストの最初の項目を抽出したいと考えています。この場合、「ジョン」を抽出します。

Spring Framework 3.0.4.RELEASE を使用すると、Bean プロパティは次のようになります。

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

これにより、明らかにリスト全体が得られます。

次を使用して名前リストの最初の項目を取得しようとしましたが、エラーが発生しました。

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

エラーは次のとおりです。

BeanExpressionException:例外の解析に失敗しました:有効な式を解析した後、式にまだデータがあります:「comma(,)」

私は本「Spring In Action」を見て、Springs WebサイトのSpring spEL Documentationを見てきました。私もかなりグーグルで検索しました。残念ながら、ほとんどのコード例はコードで行われ、Spring 定義ファイルでは行われません。これに関するご支援をいただければ幸いです。

4

1 に答える 1

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:コレクションフォームプロパティファイルの読み取り

于 2012-01-06T06:20:09.270 に答える