使用Play 2对URL进行编码

Son*_*123 14 urlencode playframework playframework-2.0

如何使用Play 2在模板中编码URL?

我搜索一个这样的帮手:

<a href="@urlEncode(name)">urlEncode doesn't work now</a>
Run Code Online (Sandbox Code Playgroud)

我找到了一个pull请求,但这似乎不适用于实际的play 2.0.3版本.

Exu*_*ery 25

从2.1开始,你可以使用 @helper.urlEncode

<a href="@helper.urlEncode(foo)">my href is urlencoded</a>
Run Code Online (Sandbox Code Playgroud)


bie*_*ior 14

正如我在链接中看到的那样,它将在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());
}
Run Code Online (Sandbox Code Playgroud)

然后根据需要在视图中使用它:

<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()?encoded=@Application.EncodeURL(routes.Application.someOtherAction())'>
     Url mixed normal+encoded</a>  <br/>
Run Code Online (Sandbox Code Playgroud)