代码如下:private ActionForward startExam(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
HttpSession session = request.getSession();
if(session.getAttribute("student")==null || session.getAttribute("student").equals("")){
return mapping.findForward("dealNull"); //转到前台登录页面
}else{
String student=session.getAttribute("student").toString(); //准考证号
if(session.getAttribute("lessonID")==null || session.getAttribute("lessonID").equals("")){
return mapping.findForward("dealNull"); //转到前台登录页面
}else{
int lessonID=Integer.parseInt(session.getAttribute("lessonID").toString()); //课程ID
//随机抽取试题
int questions=startExamDAO.randomGetQuestion(lessonID);
//刚开始考试时保存考试结果
int ret=startExamDAO.startSaveResult(student,lessonID);
// System.out.println("刚开始考试时保存考试结果:"+ret);
List singleQue=(List)startExamDAO.queryExam(questions,0);
QuestionsForm q=(QuestionsForm)form;
q.setSize(singleQue.size());
request.setAttribute("singleQue",singleQue); //获取单选题
List moreQue=(List)startExamDAO.queryExam(questions,1); //获取多选题
q.setMoreSize(moreQue.size());
request.setAttribute("moreQue",moreQue);
session.setAttribute("startTime", new java.util.Date().getTime());/*这里提示错误,提示The method setAttribute(String, Object) in the type HttpSession is not applicable for the arguments (String, long)*/
return mapping.findForward("testPaper");
}
}
}session.setAttribute错误,不知道错在哪里?

解决方案 »

  1.   

    - The method setAttribute(String, Object) in the type HttpSession is not applicable for the 
     arguments (String, long)
    - session.setAttribute("startTime", new java.util.Date().getTime());
    - 行断点:StartExam [行: 102] - startExam(ActionMapping, ActionForm, 
     HttpServletRequest, HttpServletResponse)显示提示问题中,给了上面这些提示。
      

  2.   

    在这段前面还有一段代码,定义了一个long b=new java.util.Date().getTime();
    不知道有没有关系?
    private ActionForward showStartTime(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) {
    HttpSession session = request.getSession();
    String startTime=session.getAttribute("startTime").toString();
    long a=Long.parseLong(startTime);
    long b=new java.util.Date().getTime();
    int h=(int)Math.abs((b-a)/3600000);
    String hour=cStr.formatNO(h,2);
    int m=(int)(b-a)%3600000/60000;
    String minute=cStr.formatNO(m,2);
    int s=(int)((b-a)%3600000)%60000/1000;
    String second=cStr.formatNO(s,2);
    String time=hour+":"+minute+":"+second;
    request.setAttribute("showStartTime",time);
    return mapping.findForward("showStartTime");
    }
      

  3.   

    request.setAttribute("showStartTime",time);这里错了,你的time是long类型,而setAttribute(),只能支持 setAttribute(String, Object)这种参数。
    你最好把time转成字符串型,然后设request.setAttribute("showStartTime",String);
      

  4.   

    是否可以这样更改呢?
    session.setAttribute("startTime", "" + new java.util.Date().getTime());
      

  5.   

    我是想把获取的时间放进Session中,以对应前面的
    String startTime=session.getAttribute("startTime").toString(); 
      

  6.   

    提示的异常已经说的很清楚了,new java.util.Date().getTime()得到的是long,没有被自动装箱成Long。自动装箱/自动拆箱是5.0的新特性,将你的编译器版本改为5.0!
      

  7.   


    Struts下的session不是你那么写的,应该是下面的写法request.getSession().setAttribute("moreQue",moreQue); 
      

  8.   

    正解~~~~,你的错误信息就是存入session的数据信息类型错误了,要装箱~~
      

  9.   

    ls正解~~~~,你的错误信息就是存入session的数据信息类型错误了,要装箱~~
      

  10.   

    我用的JDK1.6.0_01
    1.5以后不是具有了自动装箱拆箱的功能了吗?
      

  11.   

    我想获取的session数据时startime
     session.setAttribute("startTime", new java.util.Date().getTime());
      

  12.   


    jdk是jdk,编译器是编译器。如果是eclipse,通过:window -> perferences -> java -> compiler 就可以查看到你的编译器的版本!
    或者直接用session.setAttribute("startTime", Long.valueOf(new java.util.Date().getTime())); 也行
      

  13.   

    你得到的getTime()还是long型吧,
    你可以先格式化成String,再放进去.
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date date = new Date();
    String dateFormat = format.format(date);
    setAttribute("showStartTime", dateFormat);
    这样就OK了。