我在struts 2 webapp中有一个表单。我有jquery插件插件很好地工作。但是在我的一些页面上,我正在根据用户交互重新加载div,并使用以下javascript来提交操作并在页面上重新加载div:
function doWhatever()
{
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("mydiv").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","MyAction.action?id="+1);
xmlhttp.send();
}
这一切都运行正常,除非我用动作的结果重新加载div,没有一个jquery标签在div中的新页面上正确呈现。常规struts s:标签在div中的新页面上正确呈现在新的内部页面上,我包含了与主页面相同的标签:
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sjq" uri="/struts-jquery-tags"%>
<html>
<head>
<sj:head />
</head>
对此有任何帮助将不胜感激。
Struts 2版本2.3.16.3 struts 2 jquery插件版本:3.7.1
Spunog
答案 0 :(得分:0)
问题是Struts2-jquery-plugin生成在document.ready()
处理程序上运行的脚本。
它们在页面加载时工作正常,但是在通过AJAX调用返回的JSP片段的情况下不会触发它们。
这是问题的working and tested solution。
有关Struts2和AJAX的一般主题,您可能也想阅读this answer。