【发布时间】:2020-11-24 00:05:46
【问题描述】:
我正在尝试使用 documentation 为 Play 2.8 编写自己的自定义字段构造函数。
按照文档,我创建了这个相同的示例构造函数:
@(elements: helper.FieldElements)
<div class="@if(elements.hasErrors) {error}">
<label for="@elements.id">@elements.label</label>
<div class="input">
@elements.input
<span class="errors">@elements.errors.mkString(", ")</span>
<span class="help">@elements.infos.mkString(", ")</span>
</div>
</div>
我将其命名为app/views/myFieldConstructor.scala.html。 (我之前曾尝试将其命名为 myFieldConstructor.f;play 的文档在这里不是很好。)
然后,我在其他地方创建了一个名为 app/forms/auth/AuthFieldConstructor 的 scala 对象:
package forms.auth
import views.html
object AuthFieldConstructor {
import views.html.helper.FieldConstructor
implicit val myFields: FieldConstructor = FieldConstructor(html.myFieldConstructor.f)
}
我的 IDE 抱怨找不到f,它还推断出类型
html.myFieldConstructor 为 myFieldConstructor.type。
我我能够在我的其他模板中@import forms.auth.AuthFieldConstructor._,代码编译并呈现表单,但我的 IDE 没有正确推断这一点。
再探索一下,这段代码仍然可以编译,但 f 仍然无法识别:
object AuthFieldConstructor {
import views.html.helper.FieldConstructor
val fieldConstructor: myFieldConstructor.type = html.myFieldConstructor
implicit val myFields: FieldConstructor = FieldConstructor(fieldConstructor.f)
}
我之前遇到过.type,忘记应用对象时,但在此处添加apply 或() 并没有帮助。有什么想法可以让我的 IDE 识别这里发生的事情吗?
我关闭了 Scala 编译服务器。我正在使用 sbt shell 进行项目重新加载和构建。我选中了“为此项目使用 Play 2 编译器”。 Scala 2.13.3、sbt 1.3.13、Play 2.8.2。
【问题讨论】:
标签: scala intellij-idea playframework sbt