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 ?= "")