Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery Jsf和ajax调用,通过轮询获取动态值_Jquery_Ajax_Multithreading_Jsf_Polling - Fatal编程技术网

Jquery Jsf和ajax调用,通过轮询获取动态值

Jquery Jsf和ajax调用,通过轮询获取动态值,jquery,ajax,multithreading,jsf,polling,Jquery,Ajax,Multithreading,Jsf,Polling,点击按钮,我的ajax正在调用托管bean yourFileData方法。在yourFileData()中,我从主线程创建了一个新线程。所以我想在第一次尝试时执行主线程,新线程将运行并刷新我的行数,这样我就可以动态更新我的模式上的行数 我还创建了一个虚拟按钮来刷新我的hiddenCurrentRowCount,但这对我没有帮助,我每5秒刷新一次 代码段中的代码仅用于查看目的,在这里没有任何功能 函数ajaxValidateFile(数据){ var状态=data.status; 开关(状态){

点击按钮,我的ajax正在调用托管bean yourFileData方法。在yourFileData()中,我从主线程创建了一个新线程。所以我想在第一次尝试时执行主线程,新线程将运行并刷新我的行数,这样我就可以动态更新我的模式上的行数

我还创建了一个虚拟按钮来刷新我的hiddenCurrentRowCount,但这对我没有帮助,我每5秒刷新一次

代码段中的代码仅用于查看目的,在这里没有任何功能

函数ajaxValidateFile(数据){
var状态=data.status;
开关(状态){
案例“开始”:
refreshRowCount();
打破
案例“完成”:
打破
“成功”案例:
openModalWindow();
打破
}
}
变量刷新定时器;
函数refreshRowCount(){
refreshRowTimer=setInterval(refreshRowCount,5000);
$(“#dummyiddenbtn”)。单击();
currentCount=$(“#hiddenCurrentRowCount”).val();
$(“#validateMsg”).html(“验证“+totalCount+”记录中的“+currentCount+”);
if($(“#hiddenTotalRowCount”).val()===$(“#hiddenCurrentRowCount”).val()){
clearInterval(刷新行计时器);
$('对话框').modal('关闭');
log('给你');
}
}
openModalWindow=函数(){
totalCount=$(“#HiddentTotalRowCount”).val();
currentCount=$(“#hiddenCurrentRowCount”).val();
$(“#validateMsg”).html(“验证“+totalCount+”记录中的“+currentCount+”);
$('对话框').modal('打开');
};
我有下面的jsf代码:
公共列表文件数据(AjaxBehaviorEvent事件){
试一试{
//代码在新线程之前运行LineCount,并且工作正常
线程一=新线程(){
公开募捐{
试一试{
字符串输入;
而((input=bfredercount.readLine())!=null){
rowNum++;
}                   
}捕获(例外e){
e、 printStackTrace();
}
}
};
一、启动();
System.out.println(“它能正常工作吗?”);
}捕获(例外e){
e、 printStackTrace();
}
返回一些列表;
}
  • 创建ScheduledExecutorService,通过将模型对象引用传递给执行器,在服务器端定期刷新模型值
  • 使用primefaces轮询组件在客户端定期刷新数据。

  • 您也可以使用websocket。

    谢谢您的回答,但我们不使用任何primefaces。@Nain:然后使用OmniFaces或JSF2.3。。。创建自己的“轮询”是一个坏主意choice@Kukeltje谢谢,但是你能告诉我为什么我的代码不起作用,我哪里出了问题。我知道问题出在哪里:我的私有变量rowNum在新线程中更新了,但没有在该线程外更新。我不知道怎么解决它。