我有一个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”分配给一个double并打印它,它会以科学计数法显示回来)。
所以我进入了我的getTableQuantity()方法,并将它改为:
(版本双精度)
public double getTableQuantity() {
return tableQuantity;
}
(转换成字符串表示形式):
public String getTableQuantityFormatted() {
double d = tableQuantity;
NumberFormat formatter = new DecimalFormat("###.#####");
String f = formatter.format(d);
return f;
}
我在我的xhtml文件中将"value="#{fee.tableQuantity}"更改为"value="#{fee.tableQuantityFormatted}"。
但是现在我的xhtml页面出现以下错误:
数量值10000000不正确。 /page/feeContent.xhtml @70,58 value="#{fee.tableQuantityFormatted}": 类型java.lang.String上的属性'tableQuantityFormatted'不可写入