Play Framework:使用参数重定向到控制器方法

Mat*_*unz 6 java http-get playframework playframework-2.2

我正在使用PLAY framework 2.2.1构建一个Web应用程序,并且我试图在地址栏中显示所请求站点的所有可用http get查询参数,甚至是未在请求中设置的那些参数.如果未设置所有http get参数,我想使用默认值添加未设置参数并进行重定向.

我有一个可以通过GET请求的网站:

GET /test controllers.Application.test(q:String, w:String ?= null, f:String ?= null, o:String ?= null)
Run Code Online (Sandbox Code Playgroud)

这是我想要的方法controllers.Application:

public static Result test(String q, String w, String f, String o){

    ...

    // In case not all parameters where set
    if (reload == 1){
            return redirect(controllers.Application.test(qDefault, wDefault, fDefault, oDefault));
    }
    else {
        ok(...);
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是redirect()接受String而不是Result对象.

我的第一个解决方案是写

return controllers.Application.test(qDefault, wDefault, fDefault, oDefault);
Run Code Online (Sandbox Code Playgroud)

但不幸的是,地址栏没有更新.

我的第二个解决方案是手动构建字符串:

return redirect("/test?q=" + query + "&f=" + f + "&w=" + w + "&o=" + showOptions);
Run Code Online (Sandbox Code Playgroud)

这样可以正常工作,但没有其他更优雅的方法可以做到这一点吗?

Isa*_*moc 8

使用routes对象:

public static Result index() {
    return redirect(controllers.routes.Application.test(qDefault, wDefault, fDefault, oDefault)); 
}
Run Code Online (Sandbox Code Playgroud)

资料来源:官方文件