我正在使用Struts2将字符串格式化为带有修剪尾随零的数字。
messages.properties:
format.number={0,number,#}
jsp代码:
<s:text name="format.number">
<s:param name="value" value="%{key.policyNumber}" />
</s:text>
key.policyNumber是一个String,我收到错误为“错误500:java.lang.IllegalArgumentException:无法将给定对象格式化为数字”
UPDATE:我尝试使用相同的代码给出一个Integer然后它可以工作。像
<s:text name="format.number">
<s:param name="value" value="%{key.orderNum}" />
</s:text>
动作类
Map<PolicyObj, CustInfo> mapObj = getDBPolicyDetails();
在DB类
中PolicyObj.setPolicyNumber("0000111111");
答案 0 :(得分:1)
JSP代码的小变化。通过将字符串转换为数字来欺骗我。
这是代码。
<s:text name="format.number">
<s:param name="value" value="key.policyNumber * 1" />
</s:text>
乘以1 是我所做的一项改变,并且有效。
答案 1 :(得分:0)
Struts2使用MessageFormat
API进行格式化,如果查看java.text.NumberFormat
类,则没有format
方法将String作为参数。
我认为你不能以这种方式使用格式化。在以这种方式使用Struts2对其进行格式化之前,您必须先转换字符串。