`

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  

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

相关推荐

    struts2-Annotation

    - 配置Struts2的`struts-default.xml`或`struts-plugin.xml`,启用注解配置支持。 - 最后,运行应用程序,Struts2会自动扫描注解并根据它们进行处理。 4. **项目结构解析**: - `.classpath` 和 `.project` 是...

    java 请求的方法不存在(NoSuchMethodException)

    1. **编译错误**:在编写代码时,如果调用了未在当前类或其父类中定义的方法,编译器不会报错,但在运行时会抛出`NoSuchMethodException`。 2. **反射操作**:在使用Java反射API(如`Class.getMethod()`或`Class....

    java 反射 报错 no such method exception

    5. **框架规范遵循**:对于Struts2等框架,应遵循其规范,如避免在Action方法中使用参数(除非使用特殊注解),因为框架通常通过默认机制处理参数传递。 #### 解决方案 1. **检查方法可见性**:确认方法是否被声明...

    java.lang.NoSuchMethodException: .getPortClassMap()

    在Java编程中,`java.lang.NoSuchMethodException` 是一个常见的运行时异常,它表示尝试调用一个不存在的方法。这个异常通常发生在动态方法调用或反射操作中。在给出的标题 "java.lang.NoSuchMethodException: ....

    NoSuchMethodException如何解决.md

    NoSuchMethodException如何解决.md

    NoSuchMethodException解决办法.md

    NoSuchMethodException解决办法.md

    NoSuchMethodException(解决方案).md

    NoSuchMethodException(解决方案).md

    java BeanUtils

    当设置属性时,如果源值的类型与目标属性的类型不匹配,它会尝试自动转换。例如,将字符串转换为整数或日期。但需要注意的是,这种转换并不总是成功,可能会抛出异常,如`ConversionException`。 5. **异常处理** ...

    commons-beanutils-1.9.2下载

    2. **类型转换**:库内置了多种类型的转换器,例如`convert()`方法,它可以自动将值转换为指定的目标类型,这对于数据绑定和验证非常有用。 3. **复制属性**:`copyProperties()`方法可以将一个对象的所有属性复制...

    java.lang.NoSuchMethodException: com.sun.proxy.$Proxy58.list错误解决办法

    在给出的描述中,问题出在一个基于Struts2、Hibernate4和Spring4的Web应用项目。开发者创建了一个基类`BaseAction`,该类实现了Spring的`ModelDriven`接口,并且被声明为`@Component`,以便于Spring管理。同时,`...

    commons-beanutils-1.9.3.jar

    在处理不同类型的属性时,BeanUtils提供了自动类型转换的功能。`ConvertUtils`类包含了各种类型转换的方法,如`convert()`,可以将字符串转换为整型、浮点型、日期型等,这大大减少了手动类型转换的代码量。 3. **...

    Java上传文件错误java.lang.NoSuchMethodException的解决办法

    在Java编程中,`java.lang.NoSuchMethodException`异常通常表明在运行时尝试调用一个不存在的方法。这个错误在上传文件时出现,可能是由于在控制器方法的签名与前端发送请求时的参数不匹配导致的。在描述中提到的...

    commons-beanutil-1.7.0-src

    3. **类型转换**:BeanUtils库自动处理属性值的类型转换,使得不同类型的属性值可以互相转换,无需开发者手动进行类型检查和转换。 4. **动态Bean属性**:对于没有getter或setter方法的动态Bean属性,BeanUtils也能...

    Commons BeanUtils包说明

    - **类型转换**:自动处理基本类型和String之间的转换,使得在设置属性时,即使源数据类型与目标属性类型不同,也能进行自动转换。 2. **BeanUtils的高级特性** - **自定义转换器**:如果默认的类型转换不满足...

    java 遇到的各种异常

    - 检查Struts2配置文件(struts.xml)。 - 确保所有必需的库都包含在类路径中。 **3. `org.springframework.beans.factory.BeanCreationException`: Error creating bean with name 'biz' defined in classpath** ...

Global site tag (gtag.js) - Google Analytics