Spring:在我的context.xml中,我有:

<util:set id="someIDs" 
      set-class="java.util.HashSet"
      value-type="java.lang.String">
         <value>"W000000001"</value>
         <value>"W000000003"</value>
         <value>"W000000009"</value>        
</util:set> 

在我的Java bean中,实现是:

private Set<String> someSet = 
              ComUtilities.uncheckedCast(getApplicationContext()
             .getBean("someIDs"));

boolean found = someSet.contains("W000000009");

执行avobe代码块后,发现非常奇怪!怎么会?有什么建议/想法吗?非常感谢。

有帮助吗?

解决方案

脱离我的头脑 - 我很确定Spring不需要双引号用于String数据。所以它可能会在开始和结束时使用实际的双引号字符将这些字符串插入到地图中。

尝试检查

boolean found = someSet.contains("\"W000000009\"");

看看是否是这种情况。

其他提示

我认为这是因为你引用了Spring配置中的值,然后包含检查正在寻找一个不带引号的字符串。用这个替换你的spring配置:

<util:set id="someIDs" 
  set-class="java.util.HashSet"
      value-type="java.lang.String">
             <value>W000000001</value>
             <value>W000000003</value>
             <value>W000000009</value>            

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top