页面由左右两个iframe组成,要求右面内容更新时(内容跟左面的有关)同时刷新左边页面,解决方法似乎很简单,只要在右边的按钮事件中在form提交后,取到左边iframe的document然后重新reload一下,我是在前台js中写的,代码如下
function reuse()
{
document.CategoryMain.action="category.do?method=SVSetCategory&setuseflag=1";
document.CategoryMain.submit();
window.parent.frames["tree"].document.location="category.do?method=SVToCategoryTree“;
}
页面运行时出现问题,有时候能显示出更新后的内容,有时候还是旧的内容(IE6上跑),而用IE7跑时总是显示的是旧的内容,具体原因我猜测可能和IE版本有关系,但是最主要的原因应该跟struts的多线程有关系,更新和查询同时执行,有时候更新还没完成,查询就已经完成了,当然会显示旧的内容。
解决办法是在更新完成以后,再重新reload,代码如下(action层)
SNKCategory snCategory;
InitialContext ic = new InitialContext();
snCategory =(SNKCategory)ic.lookup("SNKCategoryBean/remote");
String result=snCategory.SNAddNewCategory(encategory);
if("".equals(result))
{
request.setAttribute("Info","添加新分类成功<script type=\"text/javascript\">window.parent.frames[\"tree\"].location.reload(\"category.do?method=SVToCategoryTree\");</script>");
request.setAttribute("categoryid",encategory.getCategoryid());
return SVToCategoryMain(mapping,form,request,response);
}
这样就确保了更新后查询