我正在为我的应用程序使用带有tile的Struts 2。
在我正在使用动作类的应用程序中,使用不同的操作方法说'A',例如添加,* edit *, save , *节省成功*等等。
在页面中,当我单击一个复选框时,我使用window.open方法通过调用动作类A的动作方法“edit()”来打开弹出窗口,动作类A执行一些数据库操作并将结果返回给弹出窗口。
执行一些修改后,我将表单提交给动作类A中名为“save()”的动作方法,并将结果页面返回到同一个弹出窗口。
问题当我关闭弹出窗口时,操作再次执行并在控制台和异常中显示空值。
我认为这可能是由于浏览器所以我尝试 event.returnValue = false 在弹出窗口中点击事件,但我仍然面临问题
我开始了解struts2中的令牌拦截器。但是当我在页面中使用标签时,它显示404错误。
我将感谢那些提供一些与在struts2中使用令牌拦截器相关的示例。
struts.xml中
<action name="*Com" method="{1}" class="com.act.A">
<result name="add" type="tiles">add</result>
<result name="edit" type="tiles">edit</result>
<result name="save" type="tiles">save</result>
<result name="savesuccess" type="tiles">savesuccess</result>
父页弹出窗口打开代码:
editwindow=window.open("editCom?id="+id+"&name="+name+"..and son on","edit","width=605px,height=270px,channelmode=no,left=250px,location=no,menubar=no,status=no,titlebar=no,toolbar=no,top=250px,scrollbars=yes,resizable=no");
Popwindow编辑窗口表单提交代码
<form name="editpage" action="saveCom" method="post">
..........
点击提交按钮后,它会在同一个popwindow上打开一个新页面,如下所示
<html>
<script type="text/javascript">
function check1(){
window.opener.location="savesuccessCom";
}
</script>
<body onunload="check1">
<form name="editsave" method="post" action="" >
.....
<p>Changes Saved Successfully</p>
<input type="button" name="Saved" id="Save" value="Save" onclick="self.close();event.returnValue=false;"/>
</form>
</body>
</html>
请帮我解决这个问题。
答案 0 :(得分:4)
在第二页中,您提供的操作是action =&#34;&#34;。
我认为由于该操作导致页面刷新=&#34;&#34;。
我相信您没有将此页面中的任何值传递到下一页,因为您正在使用按钮中的self.close()关闭页面。
因此请删除该表单标记并再次尝试。这将解决问题:-)