使用Play Framework在Scala模板中找不到的类

时间:2017-08-09 11:42:19

标签: scala intellij-idea playframework playframework-2.0

我有一个Play2 Framework应用程序,在IntelliJ Idea中完成一个完全缓存失效并重新启动后,我遇到了重新编译问题。我得到的错误是:

[warn] Class models.AgeGroup not found - continuing with a stub.
[error] /Users/xxx/app/views/registrations/selectPrinterView.scala.html:13: not found: value AgeGroup
[error]             @for( (k, v) <- AgeGroup.optionsForGroups()) {
[error]                             ^
[error] /Users/xxx/app/views/registrations/selectPrinterView.scala.html:14: overloaded method value apply with alternatives:
[error]   (keys: Seq[String],args: Any*)(implicit messages: play.api.i18n.Messages)String <and>
[error]   (key: String,args: Any*)(implicit messages: play.api.i18n.Messages)String
[error]  cannot be applied to (Any)
[error]                 <option value="@k">@Messages(v)</option>
[error] 

我想我之前已经拥有它但不记得如何解决它。关于@Messages的第二个错误可能是相关的,并且也给了后面一个。

这是我的模板代码:

    <select name="ageGroup">
    @for( (k, v) <- AgeGroup.optionsForGroups()) {
        <option value="@k">@Messages(v)</option>
    }
    </select>

我在App / models / AgeGroup:

下使用了AgeGroup类
package models;

import play.i18n.Messages;

import java.util.LinkedHashMap;
import java.util.Map;

/**
 * Created on 25/11/2015.
 */
public enum AgeGroup {
    U18,
    O18,
    BOTH,
    SPECIAL;

    public static Map<String, String> optionsForGroups() {
        LinkedHashMap<String, String> vals = new LinkedHashMap<>();
        vals.put(U18.name(), Messages.get(U18.name()));
        vals.put(O18.name(), Messages.get(O18.name()));
        vals.put(BOTH.name(), Messages.get(BOTH.name()));
        return vals;
    }

    public static Map<String, String> optionsForRooms() {
        LinkedHashMap<String, String> vals = new LinkedHashMap<>();
        vals.put(U18.name(), Messages.get(U18.name()));
        vals.put(O18.name(), Messages.get(O18.name()));
        vals.put(SPECIAL.name(), Messages.get(SPECIAL.name()));
        return vals;
    }
}

这对我有用了两年,但现在它停止了工作,我花了两个小时而无法找出原因(并且没有对代码本身进行任何更改)。所以任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:1)

我使用命令行'Activator'并在那里运行并编译。现在它似乎因为某种原因再次在激活器和IDEA中起作用。