Java 使用字符串bean作为SPEL中的键从映射中获取值
我想知道如何使用字符串bean作为键从spring定义的映射中获取值 我在xml中定义了以下映射:Java 使用字符串bean作为SPEL中的键从映射中获取值,java,spring,spring-el,Java,Spring,Spring El,我想知道如何使用字符串bean作为键从spring定义的映射中获取值 我在xml中定义了以下映射: <bean id="myMap" class="java.util.HashMap"> <constructor-arg> <util:map> <entry key="key1" value="Value1"/> <entry key="key2" value="Valu
<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:
<bean id="mySimpleString" class="java.lang.String">
<constructor-arg value="key1"/>
</bean>
要获取值,我在xml中使用SPEL,如下所示:
<bean class="com.my.MyClass">
<property name="someProp" value="#{myMap[#mySimpleString]}"/>
</bean>
我的someProp
值为空
我做错了什么?因为
myMap
是Map
您应该使用#get()
方法来检索值。
这会管用的
<property name="someProp" value="#{myMap.get(mySimpleString)}"/>
我不是专家,但我想说第二个“#”需要删除。我已经尝试过了,但没有效果。很酷,它可以工作!谢谢但是,如果我使用这样的字符串值,为什么带括号的表达式可以工作:#{myMap['key1']}
?我不确定它工作的原因,因为通常它不应该工作,并且应该引发BeanExpressionException。但无论如何,它应该与SPEL处理有关。