我有一个spring bean,它从应用程序上下文中获取预定义的hashmap值。
<util:map map-class="java.util.HashMap" id="keyValues">
<entry key="key1" value= "value1"/>
<entry key="key2" value= "value2"/>
<entry key="key3" value= "value3"/>
<entry key="key4" value= "value4"/>
</util:map>
到目前为止,这个hashmap从未有过非英文字符。但是现在添加了一个具有中文文本的新键值(value4)。该文本在应用程序中断,并显示&#34; ?????&#34;。
我也尝试过设置tomcat编码,但这没有帮助。这也许不是一个合适的解决方案,因为它可能会打破现有的价值。
在使用这些值的java类中,如果我使用URLEncode.encode(value4);
,它就可以正常工作。
我的问题是,有什么方法让我为我做URLEncode?这是为了避免进行java更改,而只是执行applicationContext.xml更改。
提前致谢。
答案 0 :(得分:1)
我会尝试这样:
<bean id="strVal" class="java.net.URLEncoder" factory-method="encode">
<constructor-arg value="value4" />
</bean>
假设该方法是静态的(我猜你使用自己的类进行编码) 然后传递参考:
<util:map map-class="java.util.HashMap" id="keyValues">
<entry key="key1" value= "value1"/>
<entry key="key2" value= "value2"/>
<entry key="key3" value= "value3"/>
<entry key="key4" value-ref = "strVal"/>
</util:map>
但是如果你需要编码更多的值,那么可能更容易编写自己的工厂类,它产生带有编码值的hashmap