Struts2支持自动类型转换,但还报NoSuchMethodException

在Web应用中,用户输入的长度值导致后台出现NoSuchMethodException异常。通过调试发现,当输入值超过Short.MAX_VALUE时,后台无法正确转换类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Web提交表单数据时,参数值都是以字符串的形式上传的,后有后台的框架自动进行类型转换或手动转换,如struts2会自动把String自动转换为一些基本的数据类型,如int。

上个星期Ricki遇到一个很奇怪的问题,在Source类中有一个方法,如:
 public void setLength(Short length) {
this.length = length;
}

主要是设置音源播放时长的,值有用户在客户端输入的。不过一次测试中,发现上传音源失败,后台打印的错误如下:
 Caused by: java.lang.NoSuchMethodException:  cn.entity.Source.setLength([Ljava.lang.String;)

纳闷的是,都没改代码,记得出错之前一直都可以的,于是断定输入值有问题,试过输入很小的值,如32时,上传音源没有问题,后使用Short.MAX_VALUE查过最大值为32767,输入值大于32767时,就会报上面的异常。对此,Ricki更加疑惑了,如果值大太的话,应该不是报这个异常啊,如:
 Short shortData = Short.valueOf("32768");

其报的异常是:
 Exception in thread "main" java.lang.NumberFormatException: Value out of range. Value:"32768" Radix:10
at java.lang.Short.parseShort(Unknown Source)
at java.lang.Short.valueOf(Unknown Source)
at java.lang.Short.valueOf(Unknown Source)
at ricki.cheung.test.Test.main(Test.java:81)


有空的话,欢迎到[url=http://hongfanshu.blogbus.com/]红番薯[/url]逛逛
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值