获取JSP中的当前位置路径?

时间:2012-08-14 01:41:24

标签: jsp struts2 jsp-tags

我有一个以下行的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&amp; /语言中的营销行为。因此,如果您在营销页面上,我需要传递营销活动,如下所示:

<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解决了这个问题。

非常感谢任何帮助!!

谢谢!

2 个答案:

答案 0 :(得分:0)

我相信adminmarketing是您的操作的名称,已映射到受尊重的操作类。 如果是这种情况,Struts2提供了一种使用ActionContext访问操作名称的方法。

您可以在动作类/基础动作类中创建一个类似

的实用程序方法
public String getActionName() {
        ActionContext a = ActionContext.getContext();
        Object value = a.getName();
        return value;
}

ActionContext提供对上下文的引用,您将能够在堆栈中获取操作名称以及许多其他有价值的信息。

答案 1 :(得分:-1)

您可以在控制器中获取操作路径并传递给jsp,所以转发到jsp url,如:

your.jsp?action=/admin

和jsp中的输出参数。