急。。java.lang.NumberFormatException: null

gubohomestead 2007-11-30 09:49:59
高手们快救救,我头都弄大了

jsp代码:

<form action="Xggdservlet" name="student">
<table width='680' border='1' cellspacing='0' cellpadding='0' bordercolor='#B8D9F2' align=center >

<%

Studtable st=(Studtable)listVo.get(0);

out.print("<tr>");
out.print("<td align=center><font style='font-size: 12pt'>");
out.print("序号");
out.print("<td align=center><font style='font-size: 12pt'>");
out.print(st.getId());
request.setAttribute("id",st.getId());
out.print("</tr>");
out.print("<tr>");
out.print("<td align=center><font style='font-size: 12pt'>");
out.print("姓名");
out.print("<td align=center><font style='font-size: 12pt'>");
out.print("<input type='text' name='name' value="+st.getName()+">");
out.print("</tr>");
out.print("<tr>");
out.print("<td align=center><font style='font-size: 12pt'>");
out.print("性别");
out.print("<td align=center><font style='font-size: 12pt'>");
out.print("<input type='text' name='sex' value="+st.getSex()+">");
out.print("</tr>");
out.print("<tr>");
out.print("<td align=center><font style='font-size: 12pt'>");
out.print("班级");
out.print("<td align=center><font style='font-size: 12pt'>");
out.print("<input type='text' name='grade' value="+st.getGrade()+">");
out.print("</tr>");
out.print("<tr>");
out.print("<td align=center><font style='font-size: 12pt'>");
out.print("学号");
out.print("<td align=center><font style='font-size: 12pt'>");
out.print("<input type='text' name='cid' value="+st.getCid()+">");
out.print("</tr>");
out.print("<tr>");
out.print("<td align=center><font style='font-size: 12pt'>");
out.print("身份证号码");
out.print("<td align=center><font style='font-size: 12pt'>");
out.print("<input type='text' name='sid' value="+st.getSid()+">");
out.print("</tr>");
%>
<tr>
<td colspan='2' align='center'><font style='font-size: 12pt'>
<input type="submit" name="cdk" value="确定修改"">
</tr>

</table>
</form>

servlet代码:
int id;
String sql="";
boolean b=false;

id=Integer.parseInt((String)request.getAttribute("stid"));


String name=request.getParameter ( "name" );
name=Chinese.toChinese(name);
String sex=request.getParameter ( "sex" );
sex=Chinese.toChinese(sex);
String grade=request.getParameter ( "grade" );
grade=Chinese.toChinese(grade);
String cid=request.getParameter ( "cid" );
String sid=request.getParameter ( "sid" );

sql="update student set name='"+name+"',set sex='"+sex+"',set grade='"+grade+"',set cid='"+cid+"',set sid='"+sid+"' where id='"+id+"'";

try{

b=Database3.executeUpdate(sql);
} catch (Exception e )
{
e.printStackTrace ( );
}

tomcat出错提示:
exception

java.lang.NumberFormatException: null
java.lang.Integer.parseInt(Unknown Source)
java.lang.Integer.parseInt(Unknown Source)
gubo.Xggdservlet.doGet(Xggdservlet.java:21)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

...全文
574 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
hui_ge110 2007-11-30
  • 打赏
  • 举报
回复
写程序这些异常要处理好
hui_ge110 2007-11-30
  • 打赏
  • 举报
回复
把id=Integer.parseInt((String)request.getAttribute("stid"));
改成:
try
{
id = Integer.parseInt(request.getAttribute("stid"));
}
catch( java.lang.NumberFormatException e )
{
//id = -1 ;
}
Johnson_Hong 2007-11-30
  • 打赏
  • 举报
回复
因为你提交页面的时候的request是一个新的请求了,你可以在jsp用
<input type="hidden" name = "id" value="<%=st.getId()%>"/>
然后servlet request.getParameter("id")来获得
jackym 2007-11-30
  • 打赏
  • 举报
回复
="update student set name='"+name+"',set sex='"+sex+"',set grade='"+grade+"',set cid='"+cid+"',set sid='"+sid+"' where id='"+id+"'";
你这update语句不对啊...
怎么后面那么多set
看来你基础东西要好好学习一下了
gubohomestead 2007-11-30
  • 打赏
  • 举报
回复
jsp里面set
request.setAttribute("id",st.getId());

servlet里面get:

int id=Integer.parseInt((String)request.getAttribute("id"));

结果返回id为null,也就是说servlet 没有接收到id的值,为什么会接收不了呢?还有其它办法把id传给servlet吗?

还有这句更新语句有没有错误:
sql="update student set name='"+name+"',set sex='"+sex+"',set grade='"+grade+"',set cid='"+cid+"',set sid='"+sid+"' where id='"+id+"'";
Johnson_Hong 2007-11-30
  • 打赏
  • 举报
回复
不加String当然不行,request.getAttribute返回的是object类型
gubohomestead 2007-11-30
  • 打赏
  • 举报
回复
jsp里面
request.setAttribute("stid",st.getId());

servlet里面:

int id=Integer.parseInt((String)request.getAttribute("id"));

若不加string则编译都编译不了
C:\>javac gubo/Xggdservlet.java
gubo/Xggdservlet.java:21: cannot find symbol
symbol : method parseInt(java.lang.Object)
location: class java.lang.Integer
id=Integer.parseInt(request.getAttribute("id"));
garagong 2007-11-30
  • 打赏
  • 举报
回复
request.setAttribute("id",st.getId()); 你的Form表单里面的键是Id,而不是Stid!!!对于每一个从前台的传来的
数据都要做一个判断!!!!这样就不会出现你所为的问题了!!呵呵!!!!
spiritsl 2007-11-30
  • 打赏
  • 举报
回复
问题应该是出现在
id=Integer.parseInt((String)request.getAttribute("stid"));

建议进行调试:
首先判断stid这个属性是在什么时候set的,然后

System.out.println("aa"+request.getAttribute("stid")+"aa");

通过上面的代码应该能够准确看出取出来的stid到底是什么东西。
kase2123456 2007-11-30
  • 打赏
  • 举报
回复
id=Integer.parseInt((String)request.getAttribute("stid"));
直接写成id=Integer.parseInt(request.getAttribute("stid"));
为什么还要强制转换成String内型呢,再转换成Int型?
Johnson_Hong 2007-11-30
  • 打赏
  • 举报
回复
Integer.parseInt((String)request.getAttribute("stid"));

你的request 里面有没有stid这个属性啊
Tian_930 2007-11-30
  • 打赏
  • 举报
回复
你不要这样写--以后工作的时候要注意:
id=Integer.parseInt((String)request.getAttribute("stid"));


String name=request.getParameter ( "name" );
name=Chinese.toChinese(name);
String sex=request.getParameter ( "sex" );
sex=Chinese.toChinese(sex);
String grade=request.getParameter ( "grade" );
grade=Chinese.toChinese(grade);
String cid=request.getParameter ( "cid" );
String sid=request.getParameter ( "sid" );
要都这样写一般不会出现你的这样的问题
String name="";
if(request.getParameter("name")!=null)
{
name=request.getPArameter("name");
}

jackym 2007-11-30
  • 打赏
  • 举报
回复
同意LS观点...
可能取到的值是空值.....
lsj19830812 2007-11-30
  • 打赏
  • 举报
回复
Integer.parseInt((String)request.getAttribute("stid"));

stid如果是空或者不可以转换成Interger的就错了
* @exception NumberFormatException if the <code>String</code>
* does not contain a parsable <code>int</code>.
*/
gubohomestead 2007-11-30
  • 打赏
  • 举报
回复
问题解决!感谢各位朋友的不惜赐教,特别是疯狂的小猪。

jsp里面:
<input type='hidden' name='id' value="+st.getId()+">

servlet里面:
id=Integer.parseInt(request.getParameter("id"));
sql="update student set name='"+name+"',sex='"+sex+"',grade='"+grade+"',cid='"+cid+"',sid='"+sid+"' where id='"+id+"'";

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧