<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>测试</title>
</head>
<script language="javascript">
var isSubmit= <%=request.getAttribute("isSubmit")%>;//action中已经设置了request的这个属性
if(isSubmit!=false){
function ck(){
document.getElementById("formAfficheID").submit();
}
}
</script>
<body onLoad="ck()">
<form id="formAfficheID" name="formAffiche" method="post"
action="afficheAction.do?action=7">
</form>
<%
List afficheList = (List) request.getAttribute("list");
System.out.println(afficheList);
%>
</body>
</html>
你在页面加载完成后,就调用ck()这个 提交表单的方法,他当然反复的提交了。
页面加载完,调用了提交from的方法,form提交到后台,后台处理返回到这个页面,这个页面又加载完毕,又执行提交方法提交,又提交到后台,又返回.......死循环了.....
ck()方法 不放在onLoad里,单独放个按钮上的onclick上吧,那样只有点击按钮时提交,返回到当前页,你不点按钮也不会提交了追问
首先谢谢你的回答! 感觉你分析的很好!我现在需要的就是在这个页面加载时向后台提交一次请求拿点数据,这个页面是主页面的一个显示区的部分,不需要点击按钮!请问,我该怎么办?如何限制它不断提交?(我刚学这方面,不懂的很多有些人说用ajax,这个我更不会)
追答那根据这个流程,你在afficheAction.do?action=7中,往request中设置一个变量,比如request.setAttribute("isRead","true"); ,然后在JSP页面中 获取 request.getAttribute("isRead");
判断能否获取到这个值,如果有值,表名是从 ACTION 回来的,,如果没有值,表名首次进入该页
懂你的意思了!非常感谢你的回答!我试下!再次感谢!
代码如下:
jsp页面中(引入struts2标签库)
<s:if test="#request.cdHouse_sxs==null">
<script type="text/javascript">
window.location = '${pageContext.request.contextPath}/cduser/cdUserAction_goindex.do(这是你请求的action)';
</script>
</s:if>
action中:先要获取request对象,自己知道的!
public String goindex()
{
//查询系统属性表
List<CdHouse_sx> cdHouse_sxs=cdHouse_sxService.findAllCdHouse_sx();
if(cdHouse_sxs!=null&&cdHouse_sxs.size()>0){
request.setAttribute("cdHouse_sxs", cdHouse_sxs);
return "goindex";
}
return null;
}
有木有帮助?
谢谢你的回答,我这样做是你说的意思吗?
把js写个单独文件,在这个jsp页面中引入,让后台的acton转向这个jsp页面,这样就不会循环了吧!
还是会死循环
我的意思是把
var isSubmit= ;//action中已经设置了request的这个属性
if(isSubmit!=false){
function ck(){
document.getElementById("formAfficheID").submit();
}
}
和
同时提出来放到一个单独的页面
恩,肯定有错误,就是自己一时没分析出来!
追答我不认为你把js拿出来就可以不死循环了 设置成一段时间提交一次的应该可以