最近做的项目框架用到了struts2,经常会在日志中看到如下告警:
java.lang.NumberFormatException: For input string: "1322196864888"
是由于时间戳造成的,查了下资料,看到“Struts2的类型转换是基于OGNL表达式的,只要我们把HTML输入项(表单元素和其他GET/POET的参数)命名为合法的OGNL表达式,就可以充分利用Struts2的转换机制。 ”。也就是说,struts2会将符合OGNL表达式的请求自动转换,会判断是否为int型,如果是则进行int转换。时间戳就是被转换成了int型,但时间戳的长度超过了int的长度,因此报错。
知道原因,那么就好解决了。
java.lang.NumberFormatException: For input string: "1322196864888"
是由于时间戳造成的,查了下资料,看到“Struts2的类型转换是基于OGNL表达式的,只要我们把HTML输入项(表单元素和其他GET/POET的参数)命名为合法的OGNL表达式,就可以充分利用Struts2的转换机制。 ”。也就是说,struts2会将符合OGNL表达式的请求自动转换,会判断是否为int型,如果是则进行int转换。时间戳就是被转换成了int型,但时间戳的长度超过了int的长度,因此报错。
知道原因,那么就好解决了。
保证struts2验证不为int型即可。
<a href="javascript:;"οnclick="document.getElementById('num').src = 'imagecode?n'+(new Date()).getTime()">换一张</a>