巧妙利用中间文件处理struts2的action结果

版权声明:转载请标注来源:https://me.csdn.net/qq_37844454 https://blog.csdn.net/qq_37844454/article/details/82987145

在Struts2的处理中,都会有一个对应的Action对相应的操作进行处理,然后将处理结果返回到指定结果页面(告知处理的结果是成功或者失败),这样下来,如果有n个action就会有n个结果页面,有没有什么方法解决这个问题呢(也就是说,所有的action共用一个结果页面)?

我的思路是:在处理结果中保存一个消息(无论是成功还是失败),然后跳转到这个统一的结果页面,通过读取消息来告知用户的操作的成功与否。顺着这个思路,我们可以用一下代码实现:

ActionContext.getContext().put("message", "恭喜您修改成功+editCountriesName.jsp");//+以后的页面为当前提交数据过来的页面,保存在消息中,等下就可以跳转到这个页面

以上代码的意思为:将“恭喜您修改成功+editCountriesName.jsp”这句话保存在一个名为:message的消息中。接下来我们在那个统一的结果页面读取消息:

<%@ page language="java" import="java.util.*" pageEncoding="gbk" %>
<%@page import="com.opensymphony.xwork2.ActionContext" %>
<%
    //ActionContext.getContext().put("message",
    String getMes = (String) ActionContext.getContext().get("message");//读取消息中的内容
    String[] str = getMes.split("\\+");//截取消息中的页面,等下会跳转到这个页面
%>
<html>
<head>
    <meta charset="utf-8">
    <script language="javascript">
        function ok() {
            var result = confirm("<%=str[0]%>");
            if (result) {
                self.location = "Admin/Management/<%=str[1]%>";
            }
        }
    </script>
</head>
<body onload="ok()">
</body>
</html>

读取消息以后,用js的confirm来显示消息,并跳转到目标页面,效果图如下:

这样,当我们读取消息并点击确定以后,就可以跳转到之前我们编辑的页面了

ps:新人小白,若有不当之处,欢迎指教。

猜你喜欢

转载自blog.csdn.net/qq_37844454/article/details/82987145