使用Ajax刷新Struts2数据表

时间:2012-01-03 08:51:05

标签: javascript ajax struts2

我在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方法中的参数发送的值。我可以在动作类方法中获取新值,但在发送响应时,将显示整个页面而不是表格。

谢谢, 萨钦

1 个答案:

答案 0 :(得分:0)

  

插入记录后,我们正在刷新页面以获取   桌子刷新了。

是不是因为你不想刷新整个页面。在这种情况下,我建议你使用Struts2 Jquery PluginGrid showcase完全符合您的要求。 有关更多示例,您可以访问Online Examples,如果您想要更具体的内容,可以请求示例。