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

时间:2014-04-03 05:53:03

标签: jsp struts2 jstl

我正在尝试更新表单上的少数数字值。一旦显示的值没有形成,我可以轻松地将它们更改为任何数字,并将正确的数字发送到后端;但是,如果我输入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

2 个答案:

答案 0 :(得分:2)

您不需要使用JSTL的fmt,Struts2内置了 Formatting Utilities

然后代替

<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)。

答案 1 :(得分:1)

如何使用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"/>'
/>