URLEn在Spring中编码Map的值

时间:2014-08-14 06:58:27

标签: java spring spring-mvc

我有一个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更改。

提前致谢。

1 个答案:

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