如何使用 Play 2 对模板中的 URL 进行编码?
我搜索这样的助手:
<a href="@urlEncode(name)">urlEncode doesn't work now</a>
我找到了一个pull request,但这似乎不适用于实际的 play 2.0.3 版本。
如何使用 Play 2 对模板中的 URL 进行编码?
我搜索这样的助手:
<a href="@urlEncode(name)">urlEncode doesn't work now</a>
我找到了一个pull request,但这似乎不适用于实际的 play 2.0.3 版本。
从 2.1 开始,您可以使用@helper.urlEncode
<a href="@helper.urlEncode(foo)">my href is urlencoded</a>
正如我在链接中看到的那样,它将在 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()?encoded=@Application.EncodeURL(routes.Application.someOtherAction())'>
Url mixed normal+encoded</a> <br/>
使用@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 这个解决方案 https://stackoverflow.com/a/9542781/99248