玩!框架传递查询字符串
Posted
技术标签:
【中文标题】玩!框架传递查询字符串【英文标题】:Play! framework pass querystring 【发布时间】:2012-03-13 06:27:54 【问题描述】:什么是正确的播放!将查询字符串(例如 ?a=x&b=y)附加到渲染模板调用的方法,例如:
render("@Login.index");
另外,我还想通过后续的表单帖子维护这个查询字符串(以下代码sn-p的粗略尝试无法编译):
#form @Login.login() + request.querystring, method:'post'
我可能会想出一些笨拙的解决方案,将原始查询字符串显式地作为参数传递,然后将其存储在隐藏的表单字段中,但知道 Play!我敢肯定还有更优雅的东西……有人能告诉我它是什么吗?
【问题讨论】:
【参考方案1】:为此,我认为您需要更改对表单进行编码的方式...
试试吧:
%
action = play.mvc.Router.reverse("Login.login");
for (String key : params.all() )
if (!"body".equals(key) && !"controller".equals(key) && !"action".equals(key))
action = action.add(key, params.get(key)[0]);
%
#form action, method:'post'
...
#/form
【讨论】:
【参考方案2】:玩!是无状态的,所以你要么必须重新传递参数:
#a @login().add('a', _caller.params.a).add('b', _caller.params.b)login#/a
或者将参数保存在 Play 的缓存中:
Cache.set(session.getId(), params.get("a"), "5mn");
【讨论】:
以上是关于玩!框架传递查询字符串的主要内容,如果未能解决你的问题,请参考以下文章
如何在直接地址栏不编码的情况下在查询字符串中传递 url(包括“&”运算符)?