2012-08-14 210 views
0

我有一個jsp下面幾行:在JSP中獲取當前位置路徑?

<ul> 
    <li><a id="iso3_dan" href="/?lang=iso3:dan&locale=iso3:dan">Dansk</a></li> 
    <li><a id="iso3_deu" href="/?lang=iso3:deu&locale=iso3:DEU">Deutsch</a></li> 
</ul> 

它基本上用來顯示語言下拉。現在,我需要以這樣一種方式創建URL,以便它將追加當前頁面操作。

我使用Struts 2

在瀏覽器中,如果我打管理員菜單,鏈接更改

http://<portalIp>/admin 

如果我打的營銷菜單,它改變

http://<portalIp>/marketing 

現在,我需要做的是我需要在該語言中附加這個/ admin行爲。所以,如果你是營銷頁面上,我需要通過營銷活動,如下圖所示:

<a id="iso3_dan" href="/marketing?lang=iso3:dan&locale=iso3:dan">Dansk</a> 
<a id="iso3_deu" href="/marketing?lang=iso3:deu&locale=iso3:DEU">Deutsch</a> 

如果你管理頁面上,我需要傳遞,目前的動作,如下圖所示:

<a id="iso3_dan" href="/admin?lang=iso3:dan&locale=iso3:dan">Dansk</a> 
<a id="iso3_deu" href="/admin?lang=iso3:deu&locale=iso3:DEU">Deutsch</a> 

如何在JSP中傳遞當前操作?我試過如下:

<a id="iso3_deu" href="<%= request.getRequestURL() %>/?lang=iso3:deu&locale=iso3:DEU">Deutsch</a> 

但是這沒有奏效。如何在不添加任何Javascript代碼的情況下獲得動作的路徑?

注意:由於搜索引擎優化,我無法使用JavaScript。否則,javscript函數document.location.pathname解決了這個問題。

任何幫助非常感謝!

謝謝!

回答

0

我相信adminmarketing是您的行動的名稱已被映射到尊重的行動類別。 如果是這種情況,Struts2提供了一種使用ActionContext來訪問動作名稱的方法。

,你可以在你的動作類/基本操作類像

public String getActionName() { 
     ActionContext a = ActionContext.getContext(); 
     Object value = a.getName(); 
     return value; 
} 

ActionContext創建一個實用的方法提供給上下文的引用,你就可以在那裏獲得行動的名稱,以及其他許多重要的信息在堆棧中。

-1

你可以操作路徑在你的控制器,並傳遞給JSP,所以期待JSP網址,如:在JSP

your.jsp?action=/admin 

和輸出參數。

+0

這是行不通的......它給了JSP路徑我想在URL中採取行動...... – Mike 2012-08-14 02:43:19

+0

好吧,如果你想獲得行動路徑,你可以在控制器中獲取行動路徑並傳遞給jsp。 – Jason 2012-08-14 02:45:56