2013-05-21 12 views
5

Ich habe die URL: http://demo.lendingclub.com/account/summary.action. Wenn diese URL besuchen, wird es an den beglaubigen Abfangjäger gehen erste, in der Interceptor-Klasse, wenn ich verwenden:So erhalten Sie Aktion URL in JSP mit Struts 2

String uri = req.getRequestURI(); 

es /account/summary.action

zurückkehren Aber wenn ich es in jsp :

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

es wird zurück: /mainapp/pages/account/summary.jsp

Warum sind sie anders, und wie kann ich Action URL in JSP bekommen?

+0

Es gibt eine Lösung: 'String namespace = ServletActionContext.getActionMapping(). GetNamespace(); \t \t \t Zeichenfolge action = ServletActionContext.getActionMapping(). GetName(); \t \t \t uri = Namespace + "/" + Aktion + ".action"; 'Aber ich denke, es ist zu kompliziert !! –

+0

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

+0

@AleksandrM gut, aber es kann immer noch kürzer sein;) – Quaternion

Antwort

2

Sie können die Aktions-URL oder einen anderen Wert abrufen, wenn Sie die Eigenschaft für die Aktion festlegen und diese Eigenschaft dann über OGNL aus dem Wertstapel abrufen.

private String actionURL; 

public String getActionURL(){ 
    return actionURL; 
} 

der Code die Aktion URL zu berechnen ist ähnlich Sie auf die Kommentare

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

dieser Code nicht .action Erweiterung unterstützt wird, wenn Sie die Erweiterung auf den Pfad hinzufügen müssen, dann müssen Sie Modifizieren Sie diesen Code entsprechend.

dann schreiben Sie Ihre Aktion-Methode

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

in der JSP

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

Sie Dispatcher Ergebnis verwendet wurden, Anforderung an die JSP als Ergebnis zu übermitteln Sie die URI an die JSP Stelle darauf erhalten .

5

Der einfachste Weg, um die aktuellen Aktionen URL zu bekommen ist: <s:url/>, wenn Sie Namespace und Aktionsparameter liefern Sie es Punkt, an anderen Aktionen, aber ohne diese Parameter wird standardmäßig die aktuelle URL machen.

+0

kurz und gut! :) –