2016-02-04 57 views
1

我想知道如何使用String bean作爲鍵從Spring定義的Map中獲取值。使用String bean作爲SPEL中的鍵獲取映射的值

我已經在我的XML定義如下圖:

<bean id="myMap" class="java.util.HashMap"> 
    <constructor-arg> 
     <util:map> 
      <entry key="key1" value="Value1"/> 
      <entry key="key2" value="Value2"/> 
     </util:map> 
    </constructor-arg> 
</bean> 

和我有以下簡單的小豆子:

<bean id="mySimpleString" class="java.lang.String"> 
    <constructor-arg value="key1"/> 
</bean> 

爲了讓我使用SPEL在我的XML作爲價值如下:

<bean class="com.my.MyClass"> 
    <property name="someProp" value="#{myMap[#mySimpleString]}"/> 
</bean> 

而且我的someProp值爲空。

我在做什麼錯了?

+0

我不是專家,但我要說的第二個「#」需要刪除 –

+0

我已經嘗試過,但它並沒有幫助。 – androberz

回答

2

as myMapMap您應該使用#get()方法來檢索該值。 這會工作

<property name="someProp" value="#{myMap.get(mySimpleString)}"/> 
+0

很酷,它的工作原理!謝謝!但是爲什麼帶括號的表達式如果使用像這樣的字符串值:'#{myMap ['key1']}'? – androberz

+0

我不確定它的工作原理,因爲通常它不應該引發BeanExpressionException。但無論如何它應該涉及到SPEL處理。 – hahn