Ste*_*eve 3 formatting jsf textbox scientific-notation
我有一个 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>
Run Code Online (Sandbox Code Playgroud)
编辑:经过一些进一步的调查,它似乎是从“double”类型中获取当前格式的。(换句话说,您可以将“10000000”分配给双精度数并打印它,它会以科学计数法显示给您)。
所以我进入了我的 getTableQuantity() 方法并将其更改为:
(双版)
public double getTableQuantity() {
return tableQuantity;
}
Run Code Online (Sandbox Code Playgroud)
(到字符串表示):
public String getTableQuantityFormatted() {
double d = tableQuantity;
NumberFormat formatter = new DecimalFormat("###.#####");
String f = formatter.format(d);
return f;
}
Run Code Online (Sandbox Code Playgroud)
我在我的 xhtml 中将 "value="#{fee.tableQuantity}" 更改为 value="#{fee.tableQuantityFormatted}"
但是现在我在 xhtml 页面上收到以下错误:
数量值 10000000 不正确。/page/feeContent.xhtml @70,58 value="#{fee.tableQuantityFormatted}":属性 'tableQuantityFormatted' 在 java.lang.String 类型上不可写
<h:inputText
id="xy"
value="10000000">
<f:convertNumber maxIntegerDigits="10" maxFractionDigits="1" pattern="#########0.0"/>
</h:inputText>
Run Code Online (Sandbox Code Playgroud)
标签 f 属于:
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
Run Code Online (Sandbox Code Playgroud)
就我而言。
归档时间: |
|
查看次数: |
4129 次 |
最近记录: |