2

これに対する非常に簡単な答えがあることを願っています。SpEL とエスケープ シーケンスを参照する他のいくつかの質問をここで読みましたが、まだ成功していません。

@ValueSpELを使用してプロパティを文字列のリストに分割したいと思います。プロパティは次のようになります。

12345|12345|12345

したがって、パイプ文字を分割する必要があります.split(\\|)。パイプ文字を正常にエスケープするために Java でこれを行うことができます。スラッシュなし、2 つのスラッシュ、4 つのスラッシュで試しましたが、すべて失敗しました。次のコードを使用してパイプを分割することは可能ですか? 私のクライアントは、何らかの理由でパイプを使い続けたいと思っています...

@Value("#{'${list.of.blocked.people}'.split('\\|')}")
private List<String> myBlockedPeopleList;

ありがとう。

参考までに、ここまで私を導いた質問へのリンクを次に示します。

プロパティ ファイルからリストを読み取り、Spring アノテーション値をロードする

Spring Docs も調べてみましたが、ドキュメントにエスケープパイプへの参照が見つかりませんでした。

SpEL に関する Spring ドキュメント

4

1 に答える 1

4

ここの Web 開発フォーラムで答えを見つけました。

私の解決策は、基本的にバックスラッシュでパイプ文字をエスケープしようとすることをあきらめ、ユニコード文字のエスケープシーケンスを使用することでした. 他の誰かが @Value を使用してパイプ区切りの文字列を取得しようとしている場合、次のコードがテストされ、Java 6、Tomcat 6、および Spring 3 で動作します。

// Reads blockPeopleString delimited with | and splits into List of Strings
@Value("#{'${blockPeopleString}'.split('\\u007c')}")
private List<String> blockPeopleList;
于 2013-08-13T21:13:33.767 に答える