`

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

阅读更多
      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)


      有空的话,欢迎到红番薯逛逛
0
0
分享到:
评论
1 楼 ぁ文安国ぁ 2011-12-08  
这个问题我也遇到了 
我的情况是这样的
页面上提交链接  system_sysServiceList?page.currPage=3
page类里面currpage是int类型的,在浏览器是直接提交不报错,但是如果在页面提交表单链接就会错。后来我发现原因是:我的表单里面还有一个隐藏标签
<input name='page.currPage' id='page.currPage' type='hidden' value='1'/>
这样的话,提交过来的page.currPage得值应该是3,1 所以是字符串类型的,所以报java.lang.NoSuchMethodException  

这是我遇到的问题的解决方法,希望能帮助你。

相关推荐

Global site tag (gtag.js) - Google Analytics