2 u014337927 u014337927 于 2015.07.06 23:09 提问

ssh中遇到java.lang.NumberFormatException

想做一个歌曲的分页显示 出现java.lang.NumberFormatException: For input string: "null"
java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)

//按songname查找歌曲
public String getSbn(){

      songlist=service.getSongByName(this.songname);
      currentpage=1;

      //总结果数
      totalresults=songlist.size();

      if(totalresults%pagesize!=0){
      pagenumber=(totalresults/pagesize)+1;
      }
      else{pagenumber=totalresults/pagesize;
      }
       start=(currentpage-1)*pagesize;
       end=(currentpage)*pagesize-1;
       request.getSession().setAttribute("songlist",songlist);
       request.getSession().setAttribute("currentpage",currentpage);
       request.getSession().setAttribute("pagenumber",pagenumber);
      return "searchresult";


}

//下一页
public String nextPage(){
        songlist=(List<Song>) session.getAttribute("songlist");
        totalresults=songlist.size();
        //将object转化成int
        //此处"currentpage"为空
        currentpage= Integer.parseInt(String.valueOf(request.getSession().getAttribute("currentpage")));
        currentpage++;
        request.getSession().setAttribute("currentpage",currentpage);
        if(totalresults%pagesize!=0){
            pagenumber=(totalresults/pagesize)+1;
            }
            else{pagenumber=totalresults/pagesize;
            }
             start=(currentpage-1)*pagesize;
             end=(currentpage)*pagesize-1;
            return"addsongok";
    }

jsp上调用nextpage()的部分
 <% if((session.getAttribute("currentpage")!=null)&&(session.getAttribute("pagenumber")!=null)){
if(Integer.parseInt(String.valueOf(request.getSession().getAttribute("currentpage")))==Integer.parseInt(String.valueOf(request.getSession().getAttribute("pagenumber"))))
{ %><% } else { %>
<a href="SongManage_nextPage?">下一页</a> 

<% }} %>

    currentpage= Integer.parseInt(String.valueOf(request.getSession().getAttribute("currentpage")));这里取回的currentpage为空。请问是为什么?

5个回答

u011376884
u011376884   2015.07.07 09:31
已采纳

既用 session.getAttribute("songlist");
又用 request.getSession().getAttribute("currentpage")
控制台输出一下session的id吧 可能不是同一个session了 自然就取不到值了

u014337927
u014337927 找到了,是我在那个页面上写了个 function里也有currentpage和pagenumber 后台取值的时候就出错了。。找了我一整天。。谢谢帮助了!
2 年多之前 回复
u011376884
u011376884 回复cd86254081: request.getSession().getId();你在每个方法体里都控制台输出 session的id,如果不同,那不同的session是取不到对应值的。看你写的代码request和session都是公共的了?那声明session时直接=request.getsession();之后全用session.getAttribute()取值吧
2 年多之前 回复
u014337927
u014337927 我把所有的都改成request.getSession().getAttribute("")了。。还是报null,实在是不知道怎么出的错。。我先执行getSbn(),最后会request.getSession().setAttribute("songlist",songlist); request.getSession().setAttribute("currentpage",currentpage); request.getSession().setAttribute("pagenumber",pagenumber)存值啊。。然后调nextPage()里的getAttribute就说是空。。为什么啊
2 年多之前 回复
u011376884
u011376884 回复cd86254081: request.getSession() 会检测当前是否有session存在 如果有,返回当前的,没有就会新建一个session,两者混着用容易出问题
2 年多之前 回复
u014337927
u014337927 其实我一直想问 session.getAttribute()和request.getSession().getAttribute()有区别吗
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2015.07.06 23:11

Integer.parseInt后面传的字符串为null,因此无法解析。

caozhy
caozhy   Ds   Rxr 2015.07.06 23:12

看看session中有没有currentpage

u014337927
u014337927 我是先点查询执行的getsbn然后再nextpage应该把currentpage存入session了啊。。 但是get出来还是null找了半天找不出来哪里错了。。求助啊
2 年多之前 回复
u014337927
u014337927   2015.07.06 23:31

我是先点查询执行的getsbn然后再nextpage应该把currentpage存入session了啊。。 但是get出来还是null找了半天找不出来哪里错了。。求助啊

dcxy0
dcxy0   Ds   Rxr 2015.07.07 09:29

建议返回一个字符串(组成下一页,上一页)然后前台展示这个字符串,将参数传递给后台就可以了

Csdn user default icon
上传中...
上传图片
插入图片