Ответ 1
Это может произойти, если значение вообще не Number
, например a String
. В основном вы используете неправильный тип для данных, которые он представляет. Чтобы представлять валюты в Java, вы должны использовать BigDecimal
. Кроме того, убедитесь, что тип в таблице базы данных прав, т.е. Он не должен быть varchar, а десятичным.
Как только вы исправили тип данных, тогда <f:convertNumber>
будет работать так, как вы сказали ему. Обратите внимание, что атрибут pattern
переопределит groupingUsed
и minFractionDigits
. Вы должны использовать либо pattern
, либо остальные. Кроме того, type="number"
уже по умолчанию, поэтому его можно удалить.
Итак, используйте
<f:convertNumber pattern="#0.00" />
или
<f:convertNumber groupingUsed="true" minFractionDigits="2" />
Обратите внимание, что они генерируют разные форматы. Вероятно, вы хотите установить группировку в false
.
Вы также можете использовать type="currency"
, затем автоматически примените правильный шаблон в соответствии с UIViewRoot#getLocale()
:
<f:convertNumber type="currency" />
См. также документацию библиотеки тегов и DecimalFormat
javadoc.