我目前正在研究一个带有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值。这是可能做的还是有其他方法可以做到这一点。
感谢。