SSM时遇到的异常(6)上——SSM的400错误(有关于int与integer区别分享)

25 篇文章 0 订阅
13 篇文章 0 订阅

 JDK1.7+Tomcat7.0+Eclipse+SSM

当我点击""查询""按钮后,页面报错:400,但是Eclipse的控制台没有报异常!!!! 

参考

(1)HTTP 400 错误 - 请求无效 (Bad request)

(2)400(HTTP状态码)_百度百科

         扩展:404页面 

 原因,主要跟Spring MVC、整型类型有关(懂还是不懂,朋友,都可以留言沟通哦~)

1、我的“查询”相关的代码

我的EmpVo的age为int类型:

我的EmpService,实际上就是EmpDAO接口类的实现类,所以直接看EmpDAO接口类与EmpDAO配置(主要看listEmp_taskByIF方法,因为我的400是在“”查询“”时出现的异常!!!):

 我的list方法:

我的EmpList页面:

EmpList页面使用了empList、edList:

浏览器显示:

2.为什么会报400

若我只查询“部门”或“员工名”等等  或者  查询“部门和员工名”或其他  或者  不查询,反正就是不查询“年龄”,当点击“查询”按钮时,就会报400,从此可知,错误就是与“年龄age”有关,

每次“登录Login“页面转向”员工列表EmpList”页面过程中,即,从login.jsp到EmpController.jsp的list,再到EmpList.jsp过程中,EmpController的list()的参数emp里的属性都有默认值:age、empId有(int类型)默认值“0”,而String对应的变量默认为“null”,但是 到 转入EmpList页面后,在"查询"模块中,年龄的输入框里没有任何值,即,不是:图中显示的那样【当“新增”时,页面里年龄输入框确实会出现"年龄:0"!!!因为age是int类型,加上init()初始化方法给了emp属性,且input里已经写了value=${emp.age}】,但却是,,你也许说,本来就是,不是吗?~也算对吧,只要没有了“value=${emp.age}”,年龄对应的输入框就不会出现"0"!!!

好的,说完这个,我接着做讲的是:“年龄”输入框没有输入什么值,当你点击“查询”时,页面或Spring MVC 也不会处理,不会将“没有值的age赋‘0’值”,所以传到后台,age没有值,连null或空格都不是,导致报400

3、解决

①将age的int类型改为Integer类型。

【将EmpVo里的age改为Integer类型,EmpDAO配置中也改条件,因为Integer默认值为null,int默认值才为0

(1) Integer与int的种种比较你知道多少?

(2)java面试题之int和Integer的区别 

【两篇文章的 并 集 就是我想分享的】

②在EmpList页面中加上JS代码,控制age的值,为‘’这样的空值时 则赋‘0’值。

推荐:【属性类型问题,不一定根据数据表的字段类型来设置Javabean的属性类型,实际上要根据SQL语句获取的字段它对应的类型来设置Javabean的属性类型,如(可忽略):xxx字段在数据库表示Number类型,但是SQL语句中使用了case...when...then...else...end,将别名为xxx的类型改为varchar类型的值,则Javabean中xxx属性的类型为String】

java.lang.reflect.UndeclaredThrowableException【java.sql.SQLException: 无法转换为内部表示】

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yvette_QIU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值