[英]Get key value from map from reference bean
我試圖從引用bean獲取地圖鍵值。
我有兩節課。 一個包含兩個Map,另一個需要從此類讀取鍵值並設置一個自己的字段。
@Data
public class ClassOne{
private Map<String, Object> xxx;
private Map<String, Object> yyy;
}
@Data
public class ClassTwo{
private String zzz;
}
xml應用程序上下文
<bean id="ClassTwo" class="...">
<property name="zzz" value="#{ClassOne.${xxx['key']} == 'myString' ? 'otherString' : false}"></property>
</bean>
<bean id="ClassOne" class="...">
<property name="xxx" value=""></property>
</bean>
我的意圖是引用bean ClassOne獲取一個Map並通過鍵獲取Map值
編輯:
對於此應用程序上下文我越來越
<bean id="ClassTwo" class="com.interns.pittaci.model.label.ClassTwo">
<!--- for property name zzz from ClassTwo set value based on map called xxx with key 'test' inside ClassOne -->
<property name="zzz" value="#{ClassOne.${xxx['test']} == 'test' ? 'test1 ' : test2}"></property>
</bean>
以下錯誤消息:
線程“主”中的異常org.springframework.beans.factory.BeanDefinitionStoreException:在類路徑資源[applicationContext.xml]中定義的名稱為“ ClassTwo”的bean定義無效:無法在值“中解析占位符'xxx ['test']'” #{ClassOne。$ {xxx ['test']}} =='test'?'test1':test2}“; 嵌套異常是java.lang.IllegalArgumentException:無法解析值“#{ClassOne。$ {xxx ['test']}} =='test'?'test1':test2}”中的占位符'xxx ['test']'
我認為問題在於訪問地圖時使用了$ {},因為訪問類屬性時不必使用$ {}。 嘗試#{ClassOne.xxx['key'] == 'myString' ? 'otherString' : false}
#{ClassOne.xxx['key'] == 'myString' ? 'otherString' : false}
除此之外,在映射中不存在鍵的情況下,application-context.xml中定義的三元運算符將返回布爾值,並嘗試將其分配給String屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.