簡體   English   中英

從參考bean的映射中獲取鍵值

[英]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值

{ClassOne。$ {xxx ['key']}} =='myString'嗎? 'otherString':false}

編輯:

對於此應用程序上下文我越來越

   <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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM