Кодировать URL с Play 2

Как я могу кодировать URL-адрес в шаблоне с помощью Play 2?

Я ищу помощника следующим образом:

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

Я нашел запрос pull, но это, похоже, не работает с фактической версией воспроизведения 2.0.3.

Ответ 1

Начиная с версии 2.1 вы можете использовать @helper.urlEncode

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

Ответ 2

Как я могу видеть в связанный галочкой, он будет разрешен в Play 2.1

Самое быстрое решение - это размещение, метод для этого в вашем контроллере (Application.java в этом примере)

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());
}

а затем используя его в представлении, как требуется на данный момент:

<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/>

Ответ 3

Использование @helper.urlEncode, как в

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

вернулся

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

в то время как то, что мне было нужно/ожидалось, было

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

Я использовал @scott-izu это решение fooobar.com/info/14944/...