巧妙利用中間檔案處理struts2的action結果
阿新 • • 發佈:2018-12-14
在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:新人小白,若有不當之處,歡迎指教。