IntelliJ IDEA 15 Play 2.4 反向路由方法参数“string cannot be applied to java.lang.String”
Posted
技术标签:
【中文标题】IntelliJ IDEA 15 Play 2.4 反向路由方法参数“string cannot be applied to java.lang.String”【英文标题】:IntelliJ IDEA 15 Play 2.4 reverse routing method parameter "string cannot be applied to java.lang.String" 【发布时间】:2016-03-04 09:50:00 【问题描述】:我使用 IntelliJ IDEA 15.0.4 开发一个 Java Play! 2.4.4 应用。几个月后(我认为这是因为 IntelliJ 更新,但不是 100% 肯定)出现了以下问题:
每当我从一个将字符串作为参数的控制器调用反向路由时,该参数都会显示为错误并显示以下消息:
ReverseMyController 中的方法名(字符串)不能应用于(java.lang.String)
这是一个代码示例:
public Result myAction(String myId)
// Do something...
// Redirect back to referrer
flash("success", "Action was a success");
if(!myId.isEmpty()) return redirect(controllers.routes.MyController.showItem(myId));
return redirect(controllers.routes.MyController.itemList(1));
在此示例中,传递给方法 showItem
的参数 myId
将错误突出显示,like this.
我已经尝试过调整项目结构设置并搜索了 Google,但无济于事。我希望有人能够帮助我解决这个问题,我的强迫症患者将非常感谢拥有一个没有错误提示的代码库;)
【问题讨论】:
【参考方案1】:接受的答案并不能解决问题,这就是我回答这个老问题的原因。
Play 2.5.4
和 InteliJ 2016.1.3
我从路由文件中的路由声明中删除了类型 (String
),并且 InteliJ 停止将其突出显示为错误。
更改以下内容:
GET /path/:string_arg controllers.MyController.myMethod(string_arg: String)
到
GET /path/:string_arg controllers.MyController.myMethod(string_arg)
而且效果很好。
【讨论】:
它回答了 Play 2.4.x 的问题,但你的答案确实解决了 Play 2.5.x 的问题。谢谢! 对play 2.6有什么建议吗?试过这个,但没有影响。我正在使用带有 Play 2.6 的 InteliJ 2017.1。【参考方案2】:是的,我遇到了和你说的一样的问题。我觉得是IDEA 15.0.4的bug,你有没有试过换成15.0.4之前的老版本?
【讨论】:
谢谢,在这种情况下我会提交一份错误报告。我不确定这是错误还是配置问题,因为到目前为止似乎没有其他人遇到同样的问题。 已经有问题了:youtrack.jetbrains.com/issue/SCL-9688希望尽快解决:) 我下载了IDEA 2016.1并将scala插件更新到3.0.0,错误信息消失了。 对我来说也一样 :) 但无论出于何种原因,我都必须将所有出现的controllers.routes.MyController
替换为 routes.MyController
。
@deezh 是的,我添加了但没有用,我将 controllers.routes.MyController
更改为 routes.MyController
,就像 raphael 建议的那样,也为我工作:)以上是关于IntelliJ IDEA 15 Play 2.4 反向路由方法参数“string cannot be applied to java.lang.String”的主要内容,如果未能解决你的问题,请参考以下文章
Intellij IDEA 无法使用 Play 框架解析符号
TwirlKeys.templateImports with Play 未在 IntelliJ IDEA 模板文件中解析
将 google-play-services 库导入 Intellij IDEA 12(和 13)
无法使用 intellij 14 解析路由文件中的符号并播放框架 2.4 reactivemongo
无法解决:带有 gradle 的 IntelliJ Idea 中的 com.google.android.gms:play-services