springmvc - 关于Controller中方法参数类型的几点注意

简单类型

1、当controller方法中的参数类型为基本数据类型时。如果页面提交过来的数据为null或"",会出现数据转换的异常。
IllegalStateException

2、当controller方法中的参数类型为基本数据类型的包装类型时,页面传递过的数据可以为"",null或无该参数提交。当此方法执行时,该包装类型参数自动设为null(包装类可以设为null)。如果被其他方法调用可能抛空指针异常。比如Controller方法中存在一个Long parentId 参数,如果页面没有提交该参数。则parentId自动被设置为null。

注意,如果使用值为null 的包装类型进行拆包时,会抛空指针异常。当将parentId(null)作为参数传递到某方法中时(该方法中的参数为基本数据类型),编译时不会抛异常。但是运行时,此包装类型的参数(null)会进行拆包,此时会抛空指针异常!此异常为运行时异常。当然,如果直接将此parentId与基本数据类型运算,同样也会抛空指针异常。

null的拆包

参考

总结:
1、如果使用基本数据类型,无法接受null值和""值。可能发生数据转换异常;
2、 如果使用包装类型,可以接受null值和""值,但是可能在参数传递时发生空指针异常。解决办法是在此变量在方法间传递时,全部使用包装类型。这样,此参数可以接收页面传递的""或null值。这样,调用此参数发生异常时,会在问题位置抛出。

转载于:https://my.oschina.net/lemos/blog/803780

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值