1

如果不清楚,请不要犹豫编辑我的问题。

目前我有一种情况,当我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 秒调用一次函数。

好的答案绝对值得赞赏。

4

0 回答 0