使用Fixtures.loadModels("...")时文件位置有问题

dre*_*wse 6 playframework

我正在使用Play Framework yabe教程,并在添加标签时遇到了问题.我不确定我添加了哪些代码导致了更改,但现在Fixtures.loadModels(data.yml)代码在.../some_folder/play-1.2.1/modules/docviewer/app中搜索文件/data.yml而不是.../some_folder/yabe_tutorial/conf/data.yml应该如此.

这是我在/ yabe_tutorial/app的默认包中的代码:

@OnApplicationStart
public class Bootstrap extends Job { 
  public void doJob() {
    if (User.count() == 0) {
        Fixtures.delete();
        Fixtures.loadModels("data.yml");
    }
  } 
}
Run Code Online (Sandbox Code Playgroud)

我可以使用任何设置来更改loadModels使用的目录吗?

我对这一切都很陌生,所以我真的很感激一些帮助.谢谢!

sig*_*urd 0

当您在 Fixtures 类中加载模型时,它会扫描 Play.javaPath 列表中的所有目录。正常行为是 javaPath 包含应用程序的“app”和“conf”目录,即根目录(Play.applicationRoot,默认情况下为“.”)。尝试调试并查看您的情况下 javaPath 包含的内容。也许这个代码示例有帮助:

    @覆盖
    公共无效doJob(){

        if (User.count() == 0) {
            VirtualFile appRoot = VirtualFile.open(Play.applicationPath);
            Play.javaPath.add(0, appRoot.child("conf"));
            Fixtures.loadModels("data.yml");
        }

    }

它将新目录插入到 Play.javaPath 路径的顶部。无论如何,这段代码相当丑陋。