使用Ajax刷新Struts2数据表

Use of Ajax to refresh Struts2 datatable

本文关键字:数据表 Struts2 刷新 Ajax 使用      更新时间:2023-09-26

我在Struts2中创建了一个数据表,还具有通过一些操作向该表中添加记录的功能。插入记录后,我们将刷新页面以刷新表。为此,我曾尝试使用Ajax,并通过请求参数将我们插入的新值发送到Action类,在响应中,我们将刷新表。

我的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;
}

现在,我希望这个Ajax调用将actionClass方法中填充的列表反映在表中。在这个方法中,我附加了通过Ajax方法中的参数发送的值。我可以在action类方法中获取新值,但在发送响应时,会显示整个页面来代替表。

谢谢,Sachin

插入记录后,我们将刷新页面以获取表已刷新。

是不是你不想为此刷新整个页面。在这种情况下,我建议您使用Struts2Jquery插件。网格展示正是您想要做的事情。有关更多示例,您可以访问Online examples,如果您想要更具体的内容,也可以请求can example。