Форматирование двойника в JSF

У меня проблема, похожая на ту, что найдена здесь: JSF selectItem label formatting.

Что я хочу сделать, так это принять двойной как значение для моего и отобразить его с двумя десятичными знаками. Можно ли это сделать легко?

Я попытался использовать, но, похоже, это применяется к значению из inputText, который отправляется на сервер, а не по начальному значению в поле ввода.

Мой код:

<h:inputText id="december" value="#{budgetMB.december}" onchange="setDirty()" styleClass="StandardBlack">
    <f:convertNumber maxFractionDigits="2" groupingUsed="false" />
</h:inputText>

EDIT: приведенный выше код действительно работает. Меня обманул JDeveloper, который не обновлял jsp-страницу, даже когда я сделал явное перестроение моего проекта и перезапустил встроенный сервер OC4J. Однако после перезагрузки моего компьютера все было в порядке.

Ответ 1

Если я не недопонимаю ваше требование, мне удалось добиться форматирования значения в поле ввода во время рендеринга представления с помощью:

<h:inputText id="text1" value="#{...}">
    <f:convertNumber pattern="#,###,##0.00"/>
</h:inputText>

Я использовал компоненты Standard Faces в моем Eclipse с фирменным брендом, поэтому я предполагаю, что атрибут pattern является частью стандартного JSF.

Ответ 2

Если то, что вы пытаетесь сделать, это изменить значение входного текстового поля на экране (чтобы исправить ввод пользователя), вам следует, вероятно, изучить одну из фреймворков ajax JSF, например Rich Faces.

Возможный пример будет выглядеть так:

<h:inputText id="december" value="#{budgetMB.december}" styleClass="StandardBlack">
  <f:convertNumber maxFractionDigits="2" groupingUsed="false" />
  <a4j:support event="onblur" reRender="december" />
</h:inputText>

Я не тестировал это, но думаю, что это может сработать.

Ответ 3

Кажется, вы на самом деле форматируете валюту. Для обработки валют уже существует определенный форматтер, который можно присвоить многим параметрам:

<f:convertNumber type="currency" />

Некоторые интересные атрибуты этого тега: locale, currencyCode, integerOnly, currencySymbol и pattern.