如何使用 Struts 2 在 JSP 中获取操作 URL?

问题描述 投票:0回答:2

我有网址:★

http://demo.lendingclub.com/account/summary.action

访问这个URL时,首先会去验证拦截器,在拦截器类中,如果我使用:

String uri = req.getRequestURI();

它会回来的

/account/summary.action

但是,如果我在 JSP 中使用它:

<%
    HttpServletRequest req = ServletActionContext.getRequest();
    String uri = req.getRequestURI();
%>

它将返回:

/mainapp/pages/account/summary.jsp

为什么它们不同,以及如何在 JSP 中获取操作 URL?

java jsp request struts2 uri
2个回答
6
投票

获取当前操作 url 的最简单方法是:

<s:url/>
如果您提供命名空间和操作参数,您可以使其指向 other 操作,但如果没有这些参数,则默认为当前 url。


2
投票

如果您为操作设置属性,则可以获取操作 URL 或任何其他值,然后通过 OGNL 从值堆栈中检索该属性。

private String actionURL;

public String getActionURL(){
  return actionURL;
}

计算操作 URL 的代码与您在评论中发布的代码类似

public String getPath(){
  ActionProxy proxy = ActionContext.getContext().getActionInvocation().getProxy();
  String namespace =  proxy.getNamespace();
  String name = proxy.getActionName();
  return namespace+(name == null || name.equals("/") ?"":("/"+name));
}

此代码不支持

.action
扩展名,如果需要将扩展名添加到路径中则需要相应修改此代码。

然后写下你的行动方法

public String excute() {
   actionURL = getPath();
   ...
   return SUCCESS;
}

在 JSP 中

<s:property value="%{actionURL}"/>

您已使用调度程序结果将请求转发到 JSP,因此您获得了指向 JSP 位置的 URI。

© www.soinside.com 2019 - 2024. All rights reserved.