Luis, tente realizar as seguintes alterações nas suas páginas xhtml:
Em primeiro, no lugar de
<?xml version='1.0' encoding='UTF-8' ?>
coloque
<?xml version='1.0' encoding='ISO-8859-1' ?>
Caso isso não resolva, adicione essa tag jsf abaixo:
<f:view contentType="text/html; charset=ISO-8859-1">
Caso isso também não resolva, experimente colocar essa instrução no componente form:
<h:form id="form" acceptcharset="ISO-8859-1">
Um exemplo:
<?xml version='1.0' encoding='ISO-8859-1' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<f:view contentType="text/html; charset=ISO-8859-1">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
<h:form id="form" acceptcharset="ISO-8859-1">
<h:outputText value="João" />
<h:inputText />
</h:form>
</h:body>
</f:view>
</html>
Uma outra forma seria implementar um filtro na aplicação, responsável por processar todas as requisições, assim:
@WebFilter("/*")
public class CharacterEncodingFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
request.setCharacterEncoding("ISO-8859-1");
chain.doFilter(request, response);
}
// ...
}
Espero ter ajudado ;)