У меня есть элемент управления h: inputText, в котором я могу вводить цифры до 7 цифр, и он преобразует их в десятичное представление (т. Е. Введите «9999999», и он будет отображать «9999999.0»). Однако, когда я наберу любое число с 7 цифрами или более, оно преобразует его в научную нотацию (т. Е. Введите «10000000» и отобразит его как «1.0E7»).
Как бизнес-требование, я должен отображать его в десятичном представлении, а не в научной записи У кого-нибудь есть способ сделать это?
<h:inputText id="tableQuantityId"
value="#{fee.tableQuantity}"
disabled="#{!fee.selected}"
rendered="#{editable}"
validator="#{facesValidator.validateQuantity}">
<a4j:support event="onchange" reRender="messages, feePart" ajaxSingle="true"/>
</h:inputText>
Редактировать: После некоторого дальнейшего исследования кажется, что он получает свой текущий формат от типа "double". (Другими словами, вы можете присвоить «10000000» двойному значению и распечатать его, и он вернется к вам в научной записи).
Итак, я вошел в свой метод getTableQuantity () и изменил его с:
(двойная версия)
public double getTableQuantity() {
return tableQuantity;
}
(в строковое представление):
public String getTableQuantityFormatted() {
double d = tableQuantity;
NumberFormat formatter = new DecimalFormat("###.#####");
String f = formatter.format(d);
return f;
}
и я изменил "value =" # {fee.tableQuantity} "на value =" # {fee.tableQuantityFormatted} "в моем xhtml
Но теперь я получаю следующую ошибку на странице xhtml:
Значение количества 10000000
неверен.
/page/feeContent.xhtml
@ 70,58
значение = "# {fee.tableQuantityFormatted}":
Свойство 'tableQuantityFormatted' не
доступный для записи по типу java.lang.String