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.4InteliJ 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

使用 Intellij 15 创建新 Play 应用程序时的控制器问题