2

什么是正确的玩法!将查询字符串(例如 ?a=x&b=y)附加到渲染模板调用的方法,例如:

render("@Login.index"); 

另外,我还想通过后续的表单帖子维护这个查询字符串(以下代码片段的粗略尝试无法编译):

#{form @Login.login() + request.querystring, method:'post'} 

我可能会想出一些笨拙的解决方案,将原始查询字符串显式地作为参数传递,然后将其存储在隐藏的表单字段中,但知道 Play!我敢肯定还有更优雅的东西......有人可以告诉我它是什么吗?

4

2 回答 2

0

为此,我认为您需要更改对表单进行编码的方式...

试试看嘛:

%{
    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}
于 2012-10-27T10:59:47.217 回答
0

玩!是无状态的,所以你要么必须重新传递参数:

#{a @login().add('a', _caller.params.a).add('b', _caller.params.b)}login#{/a}

或者将参数保存在 Play 的缓存中:

Cache.set(session.getId(), params.get("a"), "5mn");
于 2013-01-15T22:14:51.840 回答