gpt4 book ai didi

java - 从引用 bean 的映射中获取键值

转载 作者:行者123 更新时间:2023-12-02 02:56:49 26 4
gpt4 key购买 nike

我正在尝试从引用 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并通过key获取Map值

{ClassOne.${xxx['key']} == 'myString' ? 'otherString':假}

编辑:

对于这个应用程序上下文,我得到了

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

以下错误消息:

Exception in thread "main"org.springframework.beans.factory.BeanDefinitionStoreException:Invalid bean definition with name 'ClassTwo' defined in class pathresource [applicationContext.xml]: Could not resolve placeholder'xxx['test']' in value "#{ClassOne.${xxx['test']} == 'test' ? 'test1 ': test2}"; nested exception is java.lang.IllegalArgumentException:Could not resolve placeholder 'xxx['test']' in value"#{ClassOne.${xxx['test']} == 'test' ? 'test1 ' : test2}"

最佳答案

我认为问题在于访问 map 时使用 ${},因为访问类属性时不需要使用 ${}。尝试 #{ClassOne.xxx['key'] == 'myString' ? 'otherString':假}

除此之外,application-context.xml 中定义的三元运算符将返回一个 boolean 值,以防映射中不存在该键并尝试将其分配给 String 属性

关于java - 从引用 bean 的映射中获取键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57070409/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com