java - Spring 中对 Map 的值进行 URLEncode

标签 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)。此文本在应用程序中中断并显示“??????”。

我也尝试过设置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/

相关文章:

spring - 分布式计算的独立数据访问层

ajax - 第二次在ajax响应中获取不同的数据

java - 如何将一个jar文件提取并分成多个?

java - 在 Java 中显示图像

java - Spring-MVC:通过名称查找映射详细信息

java - 如何设计 Spring MVC REST 服务?

javascript - 日期类型(对象或数字)问题

java - 围绕 finder 方法的事务

java - WSDL2Java Axis 之后无法建立与 SOAP WebService 的连接

spring - 配置服务器配置无效