我可以格式化文本字段的数字值但不能更新它
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="##,####,###"/>'
/>
或type
和groupingUsed
喜欢
<input name="price" id="price" value=
'<fmt:formatNumber value='$price' type="number" groupingUsed="false"/>'
/>
【讨论】:
以上是关于我可以格式化文本字段的数字值但不能更新它的主要内容,如果未能解决你的问题,请参考以下文章