primefaces一个线程内的RequestContext

时间:2015-10-15 10:17:57

标签: java multithreading jsf-2 primefaces

我目前正在研究一个带有primefaces的JSF项目。在这里,我在支持bean(视图范围)中的单独线程内调用外部.exe文件。完成此过程后,我想显示一个primefaces对话框。这是我正在使用的代码,

public void initializeBillValidator(final BigDecimal waitSum){
        new Thread(){
            public void run() {
                String executable = "Using-CCnet.exe";
                String port = "COM1";
                String waitingTimeInSeconds = "30";
                String uniqueCode = "xyzkj";        
                NativeCodeRunner nativeExe=new NativeCodeRunner();

                startLogFileListner();
                System.out.println("Start to wait............");

                BigDecimal billValidatorAmount = nativeExe.runNativeExe("C:\\shared\\test\\Debug\\", executable, port, waitingTimeInSeconds, waitSum.toPlainString(), uniqueCode);          
                System.out.println("End to wait............");
                totalUpToNow = totalUpToNow.add(billValidatorAmount);
                //Thread.sleep(100);
                tailer.stopTailing();

                logger.info("Bill validator amount ::::: "+billValidatorAmount+" totalUpToNow "+totalUpToNow);
                if(null!=billValidatorAmount && billValidatorAmount.compareTo(new BigDecimal(0))!=0){
                    if(totalUpToNow.compareTo(enteredAmount) == -1){
                        showProceedDialog = true;   
                        RequestContext.getCurrentInstance().execute("PF('confirmdialogVar').show();");
                    }else if(totalUpToNow.compareTo(enteredAmount) ==0 || totalUpToNow.compareTo(enteredAmount) == 1){
                        showProceedDialog = false;
                        RequestContext.getCurrentInstance().execute("PF('proceeddialogVar').show();");
                    }
                }
            };
        }.start();          
}

但问题是我总是为RequestContext.getCurrentInstance()获取null值。这是可能做的还是有其他方法可以做到这一点。

感谢。

0 个答案:

没有答案