Play Framework:重定向到带有字符串参数的控制器方法不起作用
Play Framework: Redirect to controller method with string argument doesn't work
我正在尝试重定向到一个控制器方法,该方法使用反向控制器将 Long 和 String 作为参数。我用的play framework 2.4版本
我在路由文件中定义了这条路由:
GET /games/play/:id controllers.Games.renderGame(id: Long, feedback: String = "")
为了调用这个路由,我在另一个方法中使用了 redirect():
return redirect(controllers.routes.Games.renderGame(gameId, "test"));
这是我的 renderGame() 方法:
public Result renderGame(Long id, String feedback) {
//do something
return ok(...);
}
我认为这实际上应该可行,但播放时出现错误:
error: method renderGame in class ReverseGames cannot be applied to
given types;
IntelliJ 正在努力做得更好:
Error picture
如果我只使用 Long 作为参数定义方法,它工作正常,但是当添加字符串时,我再次收到错误。
知道这里出了什么问题吗?
与这个问题相关,它实际上应该有效:Play Framework: Redirect to controller method with arguments
我认为问题在于路由定义尝试在 url 模式中添加 feedback
参数
GET /games/play/:id/:feedback controllers.Games.renderGame(id: Long, feedback: String = "")
干杯。
我自己解决了这个问题,但我花了好几个小时。问题是我使用了 =
而不是 =?
。它必须看起来像这样:
GET /games/play/:id controllers.Games.renderGame(id: Long, feedback: String ?= "")
我正在尝试重定向到一个控制器方法,该方法使用反向控制器将 Long 和 String 作为参数。我用的play framework 2.4版本
我在路由文件中定义了这条路由:
GET /games/play/:id controllers.Games.renderGame(id: Long, feedback: String = "")
为了调用这个路由,我在另一个方法中使用了 redirect():
return redirect(controllers.routes.Games.renderGame(gameId, "test"));
这是我的 renderGame() 方法:
public Result renderGame(Long id, String feedback) {
//do something
return ok(...);
}
我认为这实际上应该可行,但播放时出现错误:
error: method renderGame in class ReverseGames cannot be applied to given types;
IntelliJ 正在努力做得更好: Error picture
如果我只使用 Long 作为参数定义方法,它工作正常,但是当添加字符串时,我再次收到错误。
知道这里出了什么问题吗?
与这个问题相关,它实际上应该有效:Play Framework: Redirect to controller method with arguments
我认为问题在于路由定义尝试在 url 模式中添加 feedback
参数
GET /games/play/:id/:feedback controllers.Games.renderGame(id: Long, feedback: String = "")
干杯。
我自己解决了这个问题,但我花了好几个小时。问题是我使用了 =
而不是 =?
。它必须看起来像这样:
GET /games/play/:id controllers.Games.renderGame(id: Long, feedback: String ?= "")