兩個不一樣的項目間頁面的跳轉總結

  最近在項目中碰到一個棘手的問題,咱們的項目是用兩種語言寫的,其二者之間會有一些跳轉的交互。我所面臨的問題就是經過Java項目調到ruby項目,而後還能由ruby項目跳轉到Java項目。第一次作這個有點不知所措。最後用瞭解決方案(PS:項目中session共享問題已經解決了)。javascript

  第一種解決辦法是在前端作控制,window.location.herf進行鏈接的跳轉。可是這個只能操做當前的window,由於咱們的項目中是Java頁面做爲一個iframe嵌套在ruby頁面中。因此要變父頁面的URL或者說就是整個頁面的URL。總結一下:window.location.herf前端

  javascript中的location.href有不少種用法,主要以下。java

1 self.location.href="/url" 當前頁面打開URL頁面
2 location.href="/url" 當前頁面打開URL頁面
3 windows.location.href="/url" 當前頁面打開URL頁面,前面三個用法相同。
4 this.location.href="/url" 當前頁面打開URL頁面
5 parent.location.href="/url" 在父頁面打開新頁面
6 top.location.href="/url" 在頂層頁面打開新頁面

  若是頁面中自定義了frame,那麼可將parent self top換爲自定義frame的名稱,效果是在frame窗口打開url地址spring

  此外,window.location.href=window.location.href;和window.location.Reload()和都是刷新當前頁面。區別在因而否有提交數據。當有提交數據時,window.location.Reload()會提示是否提交,window.location.href=window.location.href;則是向指定的url提交數據.windows

  最重要的是window.location.href 語句能夠實現一個框架的頁面在執行服務器端代碼後刷新另外一個框架的頁面後端

  "window.location.href"、"location.href"是本頁面跳轉
  "parent.location.href"是上一層頁面跳轉
  "top.location.href"是最外層的頁面跳轉ruby

  舉例說明:服務器

  若是A,B,C,D都是jsp,D是C的iframe,C是B的iframe,B是A的iframe,若是D中js這樣寫session

  "window.location.href"、"location.href":D頁面跳轉
  "parent.location.href":C頁面跳轉
  "top.location.href":A頁面跳轉app

  若是D頁面中有form的話,

  <form>: form提交後D頁面跳轉
  <form target="_blank">: form提交後彈出新頁面
  <form target="_parent">: form提交後C頁面跳轉
  <form target="_top"> : form提交後A頁面跳轉
 
  關於頁面刷新,D 頁面中這樣寫:

  "parent.location.reload();": C頁面刷新 (固然,也可使用子窗口的 opener 對象來得到父窗口的對象:window.opener.document.location.reload(); )

  "top.location.reload();": A頁面刷新

  第二種是在後端重定向到指定的URL,後端咱們是使用springMVC,直接能夠寫URL來實現跳轉,代碼以下:

1 @RequestMapping("redirect/{agentPartyId}/{flag}")  
2     public String redirect(@PathVariable String agentPartyId, @PathVariable String flag){
3         PropertyPlaceholderConfigurer bean = SpringContext.getBean(PROPERTY_CONFIG_BEAN);
4         Properties pros = bean.getProperties();
5         String rubyServerUrl = pros.getProperty(RUBY_SERVER_URL);
6         String url = rubyServerUrl + "/integration/t0?ext=/apply/"+agentPartyId+flag;
7         logger.info("apply redirect url={}", url);
8         return "redirect:" + url;
9     }

  大體想到的兩種解決方案就是這樣。

相關文章
相關標籤/搜索