2

我正在为我的应用程序使用带有磁贴的 Struts 2。

在应用程序中,我使用一个动作类说“A”,它具有不同的动作方法,如添加、*编辑*、保存、*保存成功*等。

在一个页面中,当我单击一个复选框时,我使用 window.open 方法通过调用操作类 A 的操作方法“edit()”打开一个弹出窗口,该操作方法执行一些数据库操作并将结果返回给弹出窗口。
执行一些修改后,我将表单提交给操作类 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">
   ..........

单击提交按钮后,它会在同一个弹出窗口中打开一个新页面,如下所示

<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>

请帮我解决这个问题。

4

1 回答 1

4

在第二页中,您给出的操作是 action=""。

我认为由于该操作 =“”,页面会刷新。

我相信您没有将任何值从该页面传递到下一页,因为您正在使用按钮中的 self.close() 关闭页面。

因此,删除该表单标签并重试。这将解决问题:-)

于 2012-11-09T04:34:56.703 回答