我有一个 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)。此文本在应用程序中中断并显示“??????”。
我也尝试过设置tomcat编码,但这没有帮助。此外,这可能不是一个合适的解决方案,因为它可能会破坏现有的值(value)观。
在使用这些值的java类中,如果我使用URLEncode.encode(value4);
,它就可以正常工作。
我的问题是,有什么办法让spring为我做URLEncode吗?这是为了避免进行 java 更改,而只需更改 applicationContext.xml。
提前致谢。
最佳答案
我会尝试这样的事情:
<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 可能会更容易
关于java - Spring 中对 Map 的值进行 URLEncode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25301872/