страницы jsf также на этой кодировке
скорее всего вы имеете ввиду, что в начале xhtml страницы есть что-то типа такого
<?xml version='1.0' encoding='UTF-8' ?>
это просто говорит xml парсеру, в какой кодировке записана сама исходная страница, и не имеет отношения к тому, в какой кодировке передаются введенные данные на сервер.
попробуйте фильтр, который для всех запросов принудительно устанавливает кодировку utf-8
@WebFilter("/*")
public class CharacterEncodingFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
}
// ...
}
если не поможет, нужно настроить кодировку запросов на вашем сервере приложений.
Конкретно мне в случае с glassfish помог вот такой glassfish-web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app error-url="">
<class-loader delegate="true"/>
<jsp-config>
<property name="keepgenerated" value="true"/>
</jsp-config>
<glassfish-web-app>
<parameter-encoding default-charset="UTF-8" />
</glassfish-web-app>
</glassfish-web-app>