2013-05-21 2 views
5

URL : http://demo.lendingclub.com/account/summary.action이 있습니다.Struts 2를 사용하여 jsp에서 작업 url을 얻는 방법

String uri = req.getRequestURI(); 

을가 /account/summary.action

을 반환하지만 JSP에서 사용하는 경우이 URL을 방문 할 때 내가 사용하는 경우 는, 먼저, 인터셉터 클래스에서 을 인증 인터셉터로 이동합니다 :

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

이 반환됩니다 /mainapp/pages/account/summary.jsp

왜 다른가, 그리고 JSP에서 액션 URL을 얻으려면 어떻게해야합니까?

+0

하나의 해결책이 있습니다 :'String namespace = ServletActionContext.getActionMapping(). getNamespace(); \t \t \t String action = ServletActionContext.getActionMapping(). getName(); \t \t \t uri = 네임 스페이스 + "/"+ 동작 + ".action"; '그러나 나는 그것이 너무 복잡하다고 생각한다 !! –

+0

''- http://stackoverflow.com/q/15755583/1700321 –

+0

@AleksandrM 좋은하지만 여전히 짧아 질 수있다) – Quaternion

답변

2

속성을 동작으로 설정하면 OGNL을 통해 값 스택에서 해당 속성을 검색하면 동작 URL이나 다른 값을 얻을 수 있습니다.

private String actionURL; 

public String getActionURL(){ 
    return actionURL; 
} 

액션 URL을 계산하는 코드가이 경로에 확장자를 추가해야 할 경우,이 코드는 .action 확장을 지원하지 않습니다

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

코멘트에 게시 유사하다 다음을 수행해야 이 코드를 그에 맞게 수정하십시오. 당신이 URI는 JSP의 위치를 ​​지적받을 결과로 JSP에 요청을 전달하는 디스패처 결과를 사용되었습니다

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

다음 JSP에서 액션 메소드

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

쓰기 .

5

현재의 행동 URL을 얻을 수있는 가장 쉬운 방법은 다음과 같습니다 당신이 네임 스페이스와 행동 매개 변수를 제공하는 경우 <s:url/> 당신이 다른 행동에 있지만, 현재의 URL에 이러한 매개 변수가 기본값없이에게 포인트를 만들 수 있습니다.

+0

짧고 달콤한! :) –

관련 문제