我正在尝试更新表单上的少数数字值。一旦显示的值没有形成,我可以轻松地将它们更改为任何数字,并将正确的数字发送到后端;但是,如果我输入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
答案 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="##,####,###"/>'
/>
或type
和groupingUsed
喜欢
<input name="price" id="price" value=
'<fmt:formatNumber value='${price}' type="number" groupingUsed="false"/>'
/>