2012-01-03 105 views
0

我已經在Struts2中創建了一個數據表,並且還具有通過某些操作將記錄添加到此表中的功能。插入記錄後,我們刷新頁面以刷新表格。 我曾嘗試爲此目的使用Ajax,並通過request參數將已插入的新值發送到Action類,並在響應中獲取表刷新。使用Ajax刷新Struts2數據表

我Ajax的功能是:

function reloadTable(){ 

var ajaxRequest; 
    try { 
     // Opera 8.0+, Firefox, Safari 
     ajaxRequest = new XMLHttpRequest(); 
    } 
    catch (e) 
    { 
     // Internet Explorer Browsers 
     try { 
       ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); 
     } 
        catch (e) 
       { 
       try { 
       ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
       catch (e) 
       { 
           alert("Your browser has no AJAX Support!"); 
        return false; 
       } 
     } 
     } 
     var elem1 = document.getElementById('host0'); 
     var elem2 = document.getElementById('ip0'); 
     var elemTable = document.getElementById('hostTable'); 
     //alert(indexSelected); 
     //alert(document.getElementById(elem).options[indexSelected].value); 
    var url = "insertTable.action"; 
    ajaxRequest.open("POST", url, true); 
    ajaxRequest.onreadystatechange = function() 
    { 
     try 
     { 
       if (ajaxRequest.readyState == 4 && ajaxRequest.status == 200) { 
         var res = ajaxRequest.responseText; 
         if (res) 
         { 
           //alert("hi"+res.greeting); 
           document.getElementById("hostTable").innerHTML = res; 
           //adjustTable(); 
         } 
       } 
     } 
     catch (e) 
     { 

     } 
    }; 
    //alert(selectedCountry); 
    ajaxRequest.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
    var hostName = elem1.value; 
    var ipAddress = elem2.value; 
    //alert("AJAX CALL"+elem1.value+elem2.value); 
    //ajaxRequest.send("hostName="+elem1.value+"&ipAddress="+elem2.value); 
    ajaxRequest.send("hostName="+hostName+"&ipAddress="+ipAddress); 
    //ajaxRequest.send(null); 
} 

內容在我的struts.xml是:在我的動作類

<action name="insertTable" method="insertNewData" class="action.LoginAction"> 
     <result name="success">/success.jsp</result> 
    </action> 

方法:

public String insertNewData(){ 
    populateList(); 
    System.out.println("Hi"+getHostName()+getIpAddress()); 
    userNameList.add(new UserType(hostName,ipAddress)); 
    return SUCCESS; 
} 

現在我想的列表填充在actionClass方法中通過此Ajax調用反映在表中。在這個方法中,我附加了通過Ajax方法中的參數發送的值。我可以在動作類方法中獲取新值,但在發送響應時整個頁面將顯示在表格的位置。

感謝, 薩欽

回答

0

記錄插入我們刷新頁面,以獲得 表刷新後。

它是否像你不想刷新整個頁面。在這種情況下,我建議你使用Struts2 Jquery PluginGrid showcase正是你想要做的。 欲瞭解更多的例子,你可以訪問Online Examples,並可以請求例如,如果你想要更具體的東西。