1. 程式人生 > >巧妙利用中間檔案處理struts2的action結果

巧妙利用中間檔案處理struts2的action結果

在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:新人小白,若有不當之處,歡迎指教。