2008-10-03 13 views
11

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

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

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

Мой код до сих пор:

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

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

+0

Попробуйте использовать backticks (`), чтобы окружить JSF-код, который содержит < and > символов - я думаю, что он съел часть вашего сообщения! – 2008-10-03 13:41:27

ответ

14

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

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

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

+0

Ваш код работал с некоторыми изменениями в шаблоне. Тем не менее, я также обнаружил, что мой собственный код работает. JDeveloper не принял изменений, которые я сделал, даже когда перекомпилировал и перезапустил встроенный сервер OC4J. Однако после перезагрузки моего компьютера все работало нормально. – Stian 2008-10-06 06:27:16

1

Если вы пытаетесь сделать это, измените значение текстового поля ввода на экране (чтобы исправить ввод пользователя), вам, вероятно, следует изучить одну из фреймворков 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> 

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

+0

На самом деле все было наоборот. Мне не нужно проверять ввод, но форматировать значение по умолчанию для поля ввода. Спасибо, в любом случае! – Stian 2008-10-06 06:25:19

0

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

<f:convertNumber type="currency" /> 

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