Во время перехода с Struts с 2.3 на 2.5 я столкнулся с похожей проблемой: тип содержимого (в заголовке ответа) всех файлов JAVAScript .JS, на которые ссылается JSP, теперь был «application / javascript; charset = ISO-8859-1» (Struts2.5) вместо charset = UTF-8 (в стойках 2.3).Атрибут Charset был установлен в utf-8 для JSP и разметки скрипта, ссылающейся на файл js.
Я добавил код от Leonel, и он наконец заработал: но кодировка теперь "text / html; charset = UTF-8",Итак, я потерял приложение / JavaScript.это не сработало должным образом.
<web-app>
...
<jsp-config>
<jsp-property-group>
<url-pattern>*.js</url-pattern>
<page-encoding>UTF-8</page-encoding>
<trim-directive-whitespaces>true</trim-directive-whitespaces>
</jsp-property-group>
</jsp-config>
Итак, я попробовал что-то еще: https://www.baeldung.com/tomcat-utf-8 С этим я получаю правильную кодировку и тип контента.
Давайте определим класс с именем CharacterSetFilter:
public class CharacterSetFilter implements Filter {
// ...
public void doFilter(
ServletRequest request,
ServletResponse response,
FilterChain next) throws IOException, ServletException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
response.setCharacterEncoding("UTF-8");
next.doFilter(request, response);
}
// ...
}
Нам нужно добавить фильтр в файл web.xml нашего приложения, чтобы он применялся ко всем запросам и ответам:
<filter>
<filter-name>CharacterSetFilter</filter-name>
<filter-class>com.baeldung.CharacterSetFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CharacterSetFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>