2017-09-23 211 views
0

我在使用<h:inputText中的<f:convertNumber groupingUsed="false" />将用户输入转换为数字。当再次打开输入对话框时,输入格式化为只显示3个小数位。我怎样才能改变这个来显示输入“保持原样”。在JSF中显示原始值f:convertNumber(无限小数位数)

要格式化输出中的值,我使用#{of:formatNumber(specification.pricePerUnit, '#0.000')}来显示3个小数位(至少)。不幸的是,我们有客户,他们想输入更多的小数位(上面的问题)。那么,我怎样才能显示至少有3个小数位的数字,但是如果有更多的数字,请将它们全部显示出来?

感谢提前:)

+1

我不知道如果我理解你的问题很好 - 只要使用''#.000 ####### '格式为始终显示3个小数位(即使它们为0),并且最多可达10个小数位数乳清不为0.例如:'将显示:'123,123456789'和这一个:''会显示:'123,400' – krokodilko

+0

啊好吧,谢谢。这对于显示值是正常工作的。 :) 另一个问题是关于编辑该值,例如对于值123,123456789,h:输入显示的是'123,123'而不是'真实'的值。 – J4y

+0

好的,有这个属性'maxFractionDigits',我也可以设置为'10'。但是没有办法在'h:input'中显示值,因为它来自数据库,但是作为本地化的数字? – J4y

回答

1

好吧,让我们假设如下:我有一个表格:我输入值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请求后:

enter image description here


现在我在12345.6789099

enter image description here


类型和Submit按钮后,已被点击:
enter image description here


一些其他的例子:
enter image description here

enter image description here

enter image description here

+0

啊没关系,所以我必须随处添加这个模式。非常感谢 :) – J4y

相关问题