我在
<f:convertNumber groupingUsed="false" />
中使用 <h:inputText
将用户输入转换为数字。再次打开输入对话框时,输入格式将仅显示 3 个小数位。我如何更改它以“按原样”显示输入。
为了格式化输出中的值,我使用
#{of:formatNumber(specification.pricePerUnit, '#0.000')}
显示 3 个小数位(至少)。不幸的是,我们有客户想要输入更多小数位(上面的问题)。那么,如何显示至少有 3 位小数位的数字,但如果有更多小数位,则全部显示出来?
提前致谢:)
好吧,让我们假设以下情况:我有一个带有以下内容的表单: 。我输入值 123,123456789 并保存。和 您上面的代码在另一个页面上的值显示为 123,123456789。但是当我再次打开表单编辑值时, 输入字段将其显示为 123,123,但不是 123,123456789。所以,我假设 maxFractionDigits 的默认值为 3?
一个非常基本的例子:
<h:form>
<div>
<h:outputText value="#{of:formatNumber( testBean.myNumber, '0.000#######')}" />
</div>
<div>
<h:inputText value="#{testBean.myNumber}" >
<f:convertNumber groupingUsed="false" pattern='0.000#######' />
</h:inputText>
</div>
<h:commandButton type="submit" value="Submit" />
</h:form>
还有一个bean代码:
private BigDecimal myNumber = new BigDecimal("355.3456");
public BigDecimal getMyNumber() {
return myNumber;
}
public void setMyNumber(BigDecimal myNumber) {
this.myNumber = myNumber;
}
一些测试:
第一个 GET 请求后的页面如下所示:
现在我输入12345.6789099
单击
Submit
按钮后:很难找到任何文档,但在 org.glassfish/javax.faces 2.3.9 中,我也发现 maxFractionDigits 有一个默认值 3。
<f:convertNumber groupingUsed="false" />
等于
<f:convertNumber groupingUsed="false" maxFractionDigits="3" />
根据您的需要更改它:
<f:convertNumber groupingUsed="false" maxFractionDigits="10" />
要让用户输入多位数的双精度数,您必须使用不带转换器的
h:inputText
。
如果你想很好地显示它(只读),你可以使用
f:convertNumber
但你需要比例来找到位数(例如将 Double 转换为 BigDecimal)。
要将其显示在数据表中,您可以使用 Omnifaces 转换器 https://showcase.omnifaces.org/taghandlers/converter