final Long fileId=flightCompareFile.getId();
            final Integer flyNum=0;
            new Thread(new Runnable() {  
                 public void run() {  
                     boolean bool;
try {
bool = validateFlightCompareResultService.validateHighLand(fileId, "0");
if (!bool) {
                       boolean bol= validateFlightCompareResultService.validateFlightCompareResult(fileId, flyNum, null);
                       if(bol){
                        getRequest().setAttribute("runHistory", AirPlanConstants.VALIDATESUCCESS);
                       }else{
                        getRequest().setAttribute("runHistory", AirPlanConstants.VALIDATESUCCESS);
                       }
                       
                     }
} catch (Exception e) {
e.printStackTrace();
}
                     
                 }  
            }).start();    我在action中的某个方法中使用了多线程,让这线程执行另一个操作,等这操作完成后想提示给前台。我使用的方法是通过httpServletRequest设置,但是后台报空指针。请问我这样做有问题没?请大家给指点指点!!sturts2acton多线程HttpServletRequest

解决方案 »

  1.   

    你没有获取到request所以空指针了!
    1、要么在用户请求的时候直接给予响应、然后让线程自己跑完!
    2、要么就不用线程跑、让用户等!
    3、或者页面写一个消息提示、循环检测后台是否有新消息(如你这种线程完成消息等)、有就弹出提示框!在线程结束的时候向消息中心发送新消息。消息可以存储在某个文件里面、或者直接存如数据库!
    消息提示完毕、记得更改消息状态为已经提示、或者直接删除!
    ------------------
    个人意见!