Неправильная кодировка в портлете Spring через ajax (Liferay) - PullRequest
1 голос
/ 28 декабря 2011

У меня есть простой портлет Spring MVC, и с одной из страниц портала мне нужно загружать контент, используя AJAX.

  $.ajax({
        type:"POST",
        url:ajaxlink,
        data:"lastnumber=" + lastnumber,
        cache:false,
        success:function (htmlanswer) {

            $("#cityspeakcontent").append(htmlanswer);


        }
    });

Результат запроса в неправильной кодировке: "Ð – ÐÐ'ОРОÐОК,жР° Ð²Ñ € онок м. поР"(должен быть utf-8)

На странице jsp у меня есть

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

Также попытался добавить фильтр:

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

Нет результата.

И когда в запрос ajax я добавляю

contentType: "charset=utf-8"

, генерируется исключение, генерируемое Liferay с очень большой стековой трассировкой =) (Как я понимаю исключениев методе doFilter com.liferay.portal.kernel.servlet.BaseFilter)

WTF я делаю неправильно?

1 Ответ

0 голосов
/ 09 апреля 2012

В методе serveResource () вы пробовали установить:

resourceResponse.setContentType("text/html; charset=UTF-8");
...