阳光E*_*Emi 5 java jsp struts2 request
我有网址:http: //demo.lendingclub.com/account/summary.action.当访问这个url时,它将首先进入拦截器类中的authenticate拦截器,如果我使用:
String uri = req.getRequestURI();
Run Code Online (Sandbox Code Playgroud)
它会回来 /account/summary.action
但是如果我在jsp中使用它:
<%
HttpServletRequest req = ServletActionContext.getRequest();
String uri = req.getRequestURI();
%>
Run Code Online (Sandbox Code Playgroud)
它将返回: /mainapp/pages/account/summary.jsp
为什么它们不同,我如何在JSP中获取操作URL?
如果您为操作设置属性,则可以获取操作 URL 或任何其他值,然后通过 OGNL 从值堆栈中检索该属性。
private String actionURL;
public String getActionURL(){
return actionURL;
}
Run Code Online (Sandbox Code Playgroud)
计算操作 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));
}
Run Code Online (Sandbox Code Playgroud)
此代码不支持.action
扩展名,如果需要将扩展名添加到路径中则需要相应修改此代码。
然后写下你的操作方法
public String excute() {
actionURL = getPath();
...
return SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)
在 JSP 中
<s:property value="%{actionURL}"/>
Run Code Online (Sandbox Code Playgroud)
您已使用调度程序结果将请求转发到 JSP,因此您获得了指向 JSP 位置的 URI。
归档时间: |
|
查看次数: |
8903 次 |
最近记录: |