0

我正在使用国际化的 struts2.0 应用程序工作,除了中文之外,它在其他语言中也可以正常工作。

当我将汉字放入 jsp 时,我在 Action 中没有得到相同的值。请帮助我。

我还使用了 UTF-8 pageEncoding

<%@page contentType="text/html" pageEncoding="UTF-8"%>

我在jsp中有一个文本框,我在其中填充了一些汉字。

但是在服务器端的 Action 类中,当我尝试检索文本框的值时,我得到了垃圾字符。

我无法添加屏幕截图,因为我没有 10 个声望。

任何帮助将不胜感激。

4

3 回答 3

1

pageEncoding在您的操作类中,在获取参数之前,将请求正文编码设置为与 JSP相同的编码。

request.setCharacterEncoding("UTF-8");

希望这可以帮助!

PS 上述解决方案仅适用于POST请求。

编辑

获取HttpServletRequest您的操作类的调用方法:

HttpServletRequest request = ServletActionContext.getRequest();

然后request如上所述设置属性。

编辑2

将此行添加到您的JSP

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>

并将其添加filter到您的web.xml

<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>

<filter-mapping>
      <filter-name>encodingFilter</filter-name>
      <url-pattern>/*</url-pattern>
</filter-mapping>
于 2012-05-24T07:04:16.270 回答
0

jsp在您的页面中尝试以下操作

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
于 2012-05-24T07:02:23.517 回答
0

最近,当我在名称文本框中复制粘贴一个汉字时,我遇到了一个来自 jsp 的问题,当我试图在 Java DAO 层中获取它时,我得到了一些名称的垃圾值。使用下面的代码我已经解决了这个问题,我可以得到与 jsp 相同的中文值。

String name = new String(entityObj.getName().getBytes("iso-8859-1"), "UTF-8");
于 2016-01-07T07:08:52.370 回答