我在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方法中的参数发送的值。我可以在动作类方法中获取新值,但在发送响应时,将显示整个页面而不是表格。
谢谢, 萨钦
答案 0 :(得分:0)
插入记录后,我们正在刷新页面以获取 桌子刷新了。
是不是因为你不想刷新整个页面。在这种情况下,我建议你使用Struts2 Jquery Plugin。 Grid showcase完全符合您的要求。 有关更多示例,您可以访问Online Examples,如果您想要更具体的内容,可以请求示例。