2013-05-21 15 views
5

Ho l'URL: http://demo.lendingclub.com/account/summary.action. Quando visitare questo URL, in primo luogo andare al autenticazione intercettore, nella classe intercettore, Se uso:Come ottenere l'URL di azione in jsp utilizzando Struts 2

String uri = req.getRequestURI(); 

tornerà /account/summary.action

Ma se usarlo in jsp :

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

tornerà: /mainapp/pages/account/summary.jsp

Perché sono diversi e come posso ottenere l'URL dell'azione in JSP?

+0

C'è una soluzione: 'String namespace = ServletActionContext.getActionMapping(). GetNamespace(); \t \t \t Azione stringa = ServletActionContext.getActionMapping(). GetName(); \t \t \t uri = spazio dei nomi + "/" + azione + ".azione"; "Ma penso che sia troppo complicato !! –

+0

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

+0

@AleksandrM buono, ma può essere ancora più corto;) – Quaternion

risposta

2

È possibile ottenere l'URL azione o qualsiasi altro valore se si imposta la proprietà sull'azione e quindi recuperare tale proprietà dallo stack di valori tramite OGNL.

private String actionURL; 

public String getActionURL(){ 
    return actionURL; 
} 

il codice per calcolare l'URL azione è simile avete inviato ai commenti

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

questo codice non è supportato .action estensione, se è necessario aggiungere l'estensione al percorso allora avete bisogno di modificare questo codice in modo corrispondente.

quindi scrivere il tuo metodo di azione

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

nel JSP

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

v'è stato utilizzato risultato dispatcher per inoltrare richiesta al JSP come risultato si ottiene l'URI indicò la posizione JSP .

5

Il modo più semplice per ottenere la corrente azioni URL è: <s:url/> se si fornisce i parametri dello spazio dei nomi e di azione si può fare punto in altri azioni, ma senza questi parametri il valore predefinito è l'URL corrente.

+0

breve e dolce! :) –

Problemi correlati