2012-08-14 188 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