我试图通过使用反向控制器重定向到控制器方法,该方法将Long和String作为参数。我使用了Play框架的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(...);
}
在我看来,这实际上应该有效但播放给我一个错误:
错误:类ReverseGames中的renderGame方法无法应用于 给定类型;
IntelliJ正在努力做得更好: Error picture
如果我使用Long作为参数定义方法它可以正常工作但是当添加字符串时我再次得到错误。
知道这里有什么问题吗?
与此问题相关,它实际上应该有效:Play Framework: Redirect to controller method with arguments
答案 0 :(得分:1)
我自己解决了这个问题但是花了我几个小时。问题是我使用的是=
而不是=?
。它看起来像这样:
GET /games/play/:id controllers.Games.renderGame(id: Long, feedback: String ?= "")
答案 1 :(得分:0)
我认为问题在于路线定义尝试在网址模式中添加feedback
参数
GET /games/play/:id/:feedback controllers.Games.renderGame(id: Long, feedback: String = "")
欢呼声。