2 qq 33830432 qq_33830432 于 2016.02.06 22:36 提问

java.lang.NumberFormatException: null 求大神!!

教师公寓与教师的关系 程序是想通过教师公寓的id获取teacher这个集合 比如几号公寓住着哪些教师 一直报转换类型错误 求大神看看

service里面的代码

public static List<Teacher> findTeacher(int id){
    List<Teacher> teacher = new ArrayList<Teacher>();
    SqlSession session =MyBatisUtils.getSqlSession();
    try{
        TeacherApartmentDaoMapper teacherapartmentMapper = session.getMapper(TeacherApartmentDaoMapper.class);
        teacher = teacherapartmentMapper.findTeacher(id);

    }catch(Exception e){
        e.printStackTrace();

    }finally{
        MyBatisUtils.closeSqlSession(session);

    }
    return teacher;

}

Action里面的代码

@Action(value="findTeacher")
public void findTeacher()throws Exception{
    ServletActionContext.getResponse().setCharacterEncoding("utf-8");
    List<Teacher> teacher = TeacherApartmentService.findTeacher((Integer.parseInt(ServletActionContext.getRequest().getParameter("ftId"))));// 这里报错
    ServletActionContext.getResponse().getWriter()
    .print(new Gson().toJson(teacher));
ServletActionContext.getResponse().getWriter().flush();
ServletActionContext.getResponse().getWriter().close();
}

请问应该怎么改,这种1对多的关系做起卡了几天了 求大神指教 感激不尽!!

控制台报的错是java.lang.NumberFormatException: null

4个回答

91program
91program   Ds   Rxr 2016.02.06 23:14
已采纳

或者,继续拆分:

 Var = ServletActionContext.getRequest().getParameter("ftId");   // 不清楚返回的数据类型,请按实现返回的数据类型定义。
 int iFtld = Integer.parseInt(Var);
 List<Teacher> teacher = TeacherApartmentService.findTeacher(iFtld);

qq_33830432
qq_33830432 回复91program: 虽然还是不行 还是谢谢大神为我解答这么多
接近 2 年之前 回复
91program
91program 回复哈赛给丶: 为什么要是String,需要查getParameter函数的返回类型。我也是刚刚查了才知道,否则我也不清楚的。
接近 2 年之前 回复
qq_33830432
qq_33830432 回复91program: 为什么要用String呢 是根据什么来用的。。
接近 2 年之前 回复
qq_33830432
qq_33830432 回复91program: 我是个小白 还是不懂怎么定义。。。
接近 2 年之前 回复
91program
91program 回复哈赛给丶: 例如:String Var = ServletActionContext.getRequest().getParameter("ftId");
接近 2 年之前 回复
91program
91program 回复哈赛给丶: 我在后面的注释已经写了,你需要根据自己的代码修改 Var 的定义,而不是直接Copy过去。
接近 2 年之前 回复
qq_33830432
qq_33830432 var报错了
接近 2 年之前 回复
caozhy
caozhy   Ds   Rxr 2016.02.06 22:40

ServletActionContext.getRequest().getParameter("ftId")
这里ftId为空,或者有前导后导空格,或者根本不是一个数字。
导致转换成int出错。
调试下。

qq_33830432
qq_33830432 debug模式进不去service里面
接近 2 年之前 回复
91program
91program   Ds   Rxr 2016.02.06 23:11

将出错的一行,拆分一下:

int iFtld = Integer.parseInt(ServletActionContext.getRequest().getParameter("ftId"));
 List<Teacher> teacher = TeacherApartmentService.findTeacher(iFtld);

然后调试一下,看看 iFtld 的值是否正确吧。

91program
91program 回复哈赛给丶: 例如:getParameter可以是获取*.jsp中格式化字符串中参数对应的数据,这样就需要对应 jsp 文件与代码中的参数,如 ftid 是否匹配。
接近 2 年之前 回复
qq_33830432
qq_33830432 回复91program: 这个怎么检查
接近 2 年之前 回复
91program
91program 回复哈赛给丶: 这样就需要检查一下 ftId 参数项,是不是写错了,或者格式不匹配。
接近 2 年之前 回复
qq_33830432
qq_33830432 还是null
接近 2 年之前 回复
luochoudan
luochoudan   Ds   Rxr 2016.02.06 22:58

建议打印一下ServletActionContext.getRequest().getParameter("ftId")的,肯定是null,从这里往回找吧。

qq_33830432
qq_33830432 确实是null 那我应该怎么改呢
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!