现在有这样的案例,两个页面fu.jsp,zi.jsp
fu.jsp有很多表单元素要填写,且有很多元素需要 其他系统根据已经填写的表单元素进行处理并且返回回填到fu.jsp
(例如要通过另外的系统来计算或者复制等返回数据)
可以这么理解
fu.jsp --> 请求 --> controller处理(与其他系统交互或者另外的处理) --> 返回到 fu.jsp(Struts回填)
现在采用
fu.jsp --> 请求 --> controller处理(与其他系统交互或者另外的处理) --> 返回到 zi.jsp(在zi.jsp只回填返回的信息)
最后还是回到fu.jsp
根据这个情况就可以运用iframe,在跳到 zi.jsp页面的时候,其实还是停留在fu.jsp,zi.jsp可以
通过 parent.document.getElementById("para").value = "返回的值"; (注意para是父页面的元素)
如果这种情况用struts返回通过property进行回写,则除了返回的信息回填之外,其他先前输入的信息也都回写了。
如果用 iframe则就可以只回填返回的信息,之前输入的信息不用回填了
例子
<form id="myForm" action="zi.html" target="aaa"><input type = "text" id = "aa" value = "100000" /><br>
<input type="text" id = "para" />
<input type="submit" value="提交" />
</form>
这个是父亲页面
<iframe name="aaa" height="0" width="0" marginheight="0" marginwidth="0"
frameborder="0"></iframe>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<script>
parent.document.getElementById("para").value = "adfadfadsf";
</script>
<body>
<div id = "zidiv">zidiv</div>
</body>
</html>
提交之后不会跳转,通过子页面回填父页面的信息。