我可以格式化文本字段的数字值但不能更新它

Posted

技术标签:

【中文标题】我可以格式化文本字段的数字值但不能更新它【英文标题】:I can format a number value of a textfiled but can not update it 【发布时间】:2014-04-03 05:53:02 【问题描述】:

我正在尝试更新表单上的几个数值。一旦值显示为无格式,我可以轻松地将它们更改为任何数字,并将正确的数字发送到后端;但是,如果我输入一个大数字,例如 6000000,它会在浏览器上更改为 6.0E7,但会发送正确的数字到后端。我添加了 fmt 库来格式化数字,但是当我提交表单时,它会将 0 发送到后端。

<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

<s:textfield id="price" name="price" value="%price" theme="simple"/>  //6.0E7


<input name="price" id="price" value='<fmt:formatNumber value='$price'/>'/> //0

【问题讨论】:

【参考方案1】:

不需要使用JSTL的fmt,Struts2已经内置Formatting Utilities

MUST READ: Using Struts2 Tags to Formatting Numbers

然后代替

<s:textfield name="price" value="%price" />  
<!-- output: 6.0E7 -->

举例

<s:textfield name="price" value="%getText('0,number,#,##0.00', price)" />
<!-- output: 6000000.00 -->

另请阅读 Type Conversion,并记住 6.0E7 是 Scientific Notation(阅读更多 here)。

【讨论】:

【参考方案2】:

如何使用pattern属性,

<input name="price" id="price" value=
    '<fmt:formatNumber value='$price' pattern="##,####,###"/>'
/>

typegroupingUsed 喜欢

<input name="price" id="price" value=
    '<fmt:formatNumber value='$price' type="number" groupingUsed="false"/>'
/>

【讨论】:

以上是关于我可以格式化文本字段的数字值但不能更新它的主要内容,如果未能解决你的问题,请参考以下文章

如何格式化文本字段javafx

Excel格式的数字

如何转换数字格式

Access中的日期格式如何转换?

将数字格式化为 s-s-rS 中的文本

无法在代码中获取 DropDownList 的文本 - 可以获取值但不能获取文本