在web页面的管理操作中,一般会有修改选项来对每一个item进行修改操作,这时一般会打开一个新窗口,在新窗口中进行修改信息,修改后页面的form提交到后台程序进行处理,后台程序处理完后,可以返回一个标记到页面前端,在页面判断这个标记的值,并根据值决定是否进行相应的web事件操作。
如在修改信息提交后,用户想要看到的是,修改页面的窗口关闭,原来的窗口中的内容重新刷新,刷新后可以看到修改的内容已经生效。
客户的信息管理页面main.vm:
<td align="center" valign="middle"> <a href="#" onclick="javascript:window.open('$link.setPage('edit.vm')?id=$!item.Id'newwindow','height=180,width=700,scrollbars=no,status=no,toolbar=no,menubar=no,location=no,top=150')" >修改</a> | <a href="#" onclick="forbid('$!item.articlecatId')">删除</a> </td> <script> function reload() { document.listForm.submit(); } </script>
这里有个reload()和修改页面edit.vm的js脚本window.opener.reload()相应,即当edit.vm的window.opener.reload()执行时,调用reload()。
修改信息的java处理代码:
context.put("message", "修改成功!"); setTemplate(data, "cmsissue,article,re_article_category.vm");
此处用的是turbine框架,context.put(str,obj);相当于request.setAttribute(str,ojb);
setTemplate()相当于forward()方法,就是程序要转向的前端页面。
要跳转到的前端页面的代码edit.vm:
<script>
alert("$!message");
window.close();
window.opener.reload();
</script>
#end
#set($!message="")
前端页面用的是velocity,如果message存在就显示message,并关闭本窗口,刷新父窗口。