开发者

Return UTF-8 encoding from an Action in Struts 2

I'm trying to output a list of strings to a jsp page using struts 2. The template file is something like this:

<%@ 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>

The corresponding java action file is:

public class TestAction extends ActionSupport {
    private static final long serialVersionUID = 1L;

    List<String> vars = null;

    public List<String> getVars() { return va开发者_如何转开发rs; }
    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;
    }
}

The problem is that, the result is:

Users
Organizações
Eventos
Locais

(source code)

<p>Users</p>
<p>Organiza&radic;&szlig;&radic;&micro;es</p>
<p>Eventos</p>
<p>Locais</p>

which I believe it means that I'm receiving the strings encoded with something that's not UTF-8. Any ideas on how to solve this?


This is very late reply, but I want to update this to help, somebody who stuck with this bug. Add following lines to your jsp to resolve the issue.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<s:property escapeHtml="false"/>


Depending on your version of struts 2

Older: (this is deprecated in newer versions)

<s:property escape="false"/>

Newer: (not sure which version this was introduced)

<s:property escapeHtml="false"/>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜