Вопрос, на который вы ссылались, уже исключил кодировку БД из-за того, что проблема уже возникает во время печати/повторного отображения отправленного значения перед сохранением в БД. Таким образом, проблема заключается в кодировке HTTP-запроса.
URL-адрес вашего соединения JDBC с указанной кодировкой,
jdbc:mysql://localhost:3306/mydb?useUnicode=yes&characterEncoding=UTF-8
только сообщает драйверу MySQL JDBC использовать UTF-8 для декодирования значений в запросах SQL перед отправкой в БД. Это не только полностью выходит за рамки JSF, но и не является причиной вашей проблемы, при условии, что вы абсолютно уверены, что у вас та же проблема, что и в связанном вопросе.
Ваш пролог XML с указанной кодировкой,
<?xml version='1.0' encoding='UTF-8' ?>
только сообщает синтаксическому анализатору XML использовать UTF-8 для декодирования источника XML перед построением дерева XML вокруг него. Фактически используемый синтаксический анализатор XML — это SAX, используемый внутри Facelets во время сборки представления JSF. Эта часть не имеет никакого отношения к кодированию HTTP-запроса/ответа и, таким образом, маловероятно, что она является причиной вашей проблемы.
Ни один из них не устанавливает кодировку HTTP-запроса, а вам нужно установить кодировку HTTP-запроса. Вопрос, на который вы ссылались, уже показывает, как это сделать для сервера Glassfish. Однако в вашем случае вы используете сервер JBoss AS. В этом случае настройка, специфичная для Glassfish, неприменима, и JBoss ничего подобного не поддерживает. Вам нужно будет ввести собственный фильтр сервлета, чтобы выполнить эту работу. Например.
@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);
}
// ...
}
person
BalusC
schedule
14.07.2013