如果不清楚,请不要犹豫编辑我的问题。
目前我有一种情况,当我server
发送任何消息时response
,我需要JSP
在我的bean class
更改时反映消息。
我的豆类将是,
public class Information {
public LinkedList<String> information = null ;
public LinkedList<String> getInformation() {
return information;
}
public void setInformation(LinkedList<String> information) {
this.information = information;
System.out.println("List is : "+this.information);
}
}
我Thread
将运行以影响 bean 类,当它得到任何响应时server
Class Producer extends Thread{
LinkedList<String>() list = new LinkedList<String>();
Information info = new Information();
public void run() {
if(ConnectionProtocol.protocol != null){
try {
response = ConnectionProtocol.protocol.receive();
if(response != null){
System.out.println("Listener Response : \n"+response+"\n");
list.add("EventLinkEventLinkConnected event received..");
info.setInformation(list);
}
}
}
}
}
当我的 bean 类将受到影响或修改时,我需要在 JSP 中显示这些信息。
此外,我知道 ajax 并在每 5 秒访问一次 bean 时使用这种情况。如果 bean 中没有消息,我会得到空值。而且一切正常。
我的ajax将是,
function pingAction(){
$.ajax(
{
type: "post",
url: "PingAction",
async: true,
data : "userId="+encodeURIComponent(userId)+"&secureKey="+encodeURIComponent(secureKey)+"&sid="+Math.random() ,
cache:false,
contentType: "application/x-www-form-urlencoded; charset=utf-8",
scriptCharset: "utf-8" ,
dataType: "html",
error: function (xhr, ajaxOptions, thrownError) {
//alert("status :"+xhr.status+"\nthrownError : "+thrownError+"\nresponseText : "+xhr.responseText);
xhr.abort();
},
success: function( responseData , status){
//alert("PingAction Response Data : "+ responseData +"\nStatus : "+status);
if(responseData != "null" && responseData.length != 0 && responseData != null){
//Process to view the response in the JSP
}
} ,
complete:function(){
timer = setTimeout(pingAction, 5000);
}
}
);
}
但是当我的服务器没有发送任何要添加到列表中的消息时,会出现空响应。因为我PingAction()
每 5 秒调用一次函数。
好的答案绝对值得赞赏。