从Struts 2中的Action返回UTF-8编码

问题描述

| 我正在尝试使用struts 2将字符串列表输出到jsp页面。模板文件如下所示:
<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\"
    pageEncoding=\"UTF-8\"%>
<%@ taglib prefix=\"s\" uri=\"/struts-tags\" %>

<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">
<html>
<head>
<title>Test</title>
<Meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">
</head>
<body>
<s:iterator value=\"vars\">
<p><s:property /></p>
</s:iterator>
</body>
</html>
相应的java操作文件是:
public class TestAction extends ActionSupport {
    private static final long serialVersionUID = 1L;

    List<String> vars = null;

    public List<String> getvars() { return vars; }
    public void setvars(List<String> vars) { this.vars = vars; }

    @Override
    public String doExecute() throws Exception {
        vars = new ArrayList<String>();

        vars.add(\"Users\");
        vars.add(\"Organizações\");
        vars.add(\"Eventos\");
        vars.add(\"Locais\");

        return SUCCESS;
    }
}
问题是,结果是:
Users
Organizações
Eventos
Locais
(源代码
<p>Users</p>
<p>Organiza&radic;&szlig;&radic;&micro;es</p>
<p>Eventos</p>
<p>Locais</p>
我相信这意味着我正在接收使用非UTF-8编码的字符串。关于如何解决这个问题的任何想法?     

解决方法

这是非常晚的答复,但是我想更新此消息以帮助那些坚持此错误的人。将以下行添加到您的jsp中以解决该问题。
<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>
<s:property escapeHtml=\"false\"/>
    ,取决于您的struts 2版本 较旧的版本:(较新版本不推荐使用)
<s:property escape=\"false\"/>
较新的:(不确定引入的版本)
<s:property escapeHtml=\"false\"/>