2012-09-01 12 views
11

Come posso codificare un URL in un modello con Play 2?Codifica un URL con Play 2

che cerco un aiuto come questo:

<a href="@urlEncode(name)">urlEncode doesn't work now</a> 

ho trovato un pull request, ma questo non sembra funzionare con l'attuale versione 2.0.3 del gioco.

risposta

22

come di 2.1 è possibile utilizzare @helper.urlEncode

<a href="@helper.urlEncode(foo)">my href is urlencoded</a> 
13

Come posso vedere in linked ticked sarà risolto in Play 2.1

soluzione più veloce è l'immissione, il metodo (s) per quella in voi controllore (Application.java in questo campione)

public static String EncodeURL(String url) throws java.io.UnsupportedEncodingException { 
    url = java.net.URLEncoder.encode(url, "UTF-8"); 
    return url; 
} 

public static String EncodeURL(Call call) throws java.io.UnsupportedEncodingException { 
    return EncodeURL(call.toString()); 
} 

e poi utilizzando nella vista come richiesto in questo momento:

<a href='@Application.EncodeURL(routes.Application.someAction())'> 
    Encoded url form router</a> <br/> 

<a href='@Application.EncodeURL("/this/is/url/to/encode")'> 
    Encoded url from string</a> <br/> 

<a href='@routes.Application.someAction()[email protected](routes.Application.someOtherAction())'> 
    Url mixed normal+encoded</a> <br/> 
+0

Ok grazie, questo mi ha aiutato. – Sonson123

+0

java.net.URLEncoder è un nome molto brutto in quanto dovrebbe essere utilizzato solo per codificare i parametri di query. Ma l'idea generale di come questo può essere implementato in gioco sembra corretta. –

1

Utilizzando @ helper.urlEncode come in

@helper.urlEncode("http://www.giulio.ro/image/magictoolbox_cache/3bf842518f40ca6b8a10b619b8e02daf/6/2/621/thumb320x320/0804-427 - 255 lei.jpg")

restituito

http%3A%2F%2Fwww.giulio.ro%2Fimage%2Fmagictoolbox_cache%2F3bf842518f40ca6b8a10b619b8e02daf%2F6%2F2%2F621%2Fthumb320x320%2F0804-427+-+255+lei.jpg

mentre quello che mi serviva/aspettavo era

http://www.giulio.ro/image/magictoolbox_cache/3bf842518f40ca6b8a10b619b8e02daf/6/2/621/thumb320x320/0804-427%20-%20255%20lei.jpg

Ho usato @ scott-izu questa soluzione https://stackoverflow.com/a/9542781/99248