Facelet не конвертирует форматированную валюту правильно - PullRequest
2 голосов
/ 29 марта 2010

У меня есть следующий код на странице лицевой страницы:

<h:inputNumber value="bean.property">
    <f:convertNumber type="currency" />
</h:inputNumber

Преобразователь потому, что внутри поля ввода может быть своего рода значение по умолчанию, которое получается из свойства bean-компонента. Все отображается правильно. Значение внутри поля ввода отображается символом «€» (например, «1.453 €».

Когда я отправляю форму, появляется сообщение об ошибке:

"nameOfInputField" konnte nicht als ein Geldbetrag erkannt werden '304,00 â¬'

В английском это что-то вроде:

"nameOfInputField" could not be regognized as an amount of money '304,00 â¬'

Пожалуйста, взгляните на символ "€". Кажется, он напечатан как «¬¬». Хотя он был правильно отрисован до отправки формы, теперь он выглядит как «â» внутри сообщения об ошибке и внутри поля ввода.

Все страницы кодируются в UTF-8.

В чем причина этой ошибки? Как это можно исправить?

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 29 марта 2010

Поместите это на страницу вашего лица:

<?xml version="1.0" encoding="UTF-8" ?>

Он будет инструктировать парсер Facelets.

1 голос
/ 29 марта 2010

â¬

Это типично для & евро; из исходного источника UTF-8, который был неправильно декодирован с использованием ISO-8859-1. Вот небольшой фрагмент, который демонстрирует, что:

System.out.println(new String("€".getBytes("UTF-8"), "ISO-8859-1"));

Все страницы кодируются в UTF-8.

Вы, вероятно, говорите о кодировке response . Вам также необходимо установить кодировку request .

Чтобы установить кодировку для GET запросов (в основном: кодировка URI), вам необходимо обратиться к документации, специфичной для сервера приложений. Поскольку неясно, какой из них вы используете, вот целевой пример Tomcat: <Connector URIEncoding="UTF-8" />. Чтобы установить кодировку для POST запросов, вам необходимо создать простой фильтр, который выполняет request.setCharacterEncoding("UTF-8"), если он равен null. Дополнительную справочную информацию и советы можно найти в этой статье .

...