Spring in Action 3rd editionという本でSpringを学んでいます。
SpEL 内の三項式に関するセクションまで読んでいます。
それは書いています:
条件が true の場合は SpELexpression を 1 つの値に評価し、それ以外の場合は別の値に評価する場合はどうすればよいでしょうか? たとえば、カール (前のインストゥルメンタリスト) が「ジングル ベル」の場合はピアノを弾きたいとしますが、それ以外の場合はサックスを演奏します。その場合、SpEL の三項 (?:) 演算子を使用できます。
<property name="instrument"
value="#{songSelector.selectSong()=='Jingle Bells'?piano:saxophone}"/>
ご覧のとおり、SpEL の三項演算子は Java の三項演算子と同じように機能します。この場合、選択された曲が「ジングル ベル」であれば、インストゥルメント プロパティはピアノビーンを参照して配線されます。それ以外の場合は、IDis サックスの Bean に接続されます。
これを次のxmlで実装します。
<bean id="kenny"
class="com.springinaction.springidol.Instrumentalist"
p:song="Jingle Bells">
<property name="instrument"
value="#{kenny.song == 'Jingle Bells' ? piano:saxophone}"/>
</bean>
<bean id="piano"
class="com.springinaction.springidol.Piano" />
<bean id="saxophone"
class="com.springinaction.springidol.Saxophone" />
出力:
ジングルベルの演奏:TOOT TOOT TOOT
これは正しくありません。次のようにする必要があります。
ジングルベルの演奏:PLINK PLINK PINK
テストで正しい xml が使用され、正しい Bean が取得されていること、および楽器の音が正しいことを確認しました。(サックスはTOOT TOOT TOOT、ピアノはPLINK PLINK PINK)
何か案が?ありがとう。