在应用程序.java中按名称返回结果视图



在我正在追求的Play 2.2!Web项目中,我想在应用程序中按名称返回视图.java

我在路由配置中添加了以下内容:

GET     /:page                      controllers.Application.show(page: String)

我希望应用程序.java仅使用其名称(字符串页面)返回正确的视图。

目前我有:

public static Result show(String page) {
    switch(page){
        case "home":
            return ok(home.render());
        case "register":
            return ok(register.render());
    }
    return ok(home.render());
}

我想在这里避免使用 switch 语句,并让 show(字符串页面)以编程方式找到与参数中给出的字符串页面匹配的视图并返回它(如果未找到匹配项,则返回主页)。

编辑:我已经读过一些关于反射的东西,但我真的不知道那是什么或如何使用它:/

感谢您的见解:)

请记住,Play的视图是一个Scala函数 - 它采用参数,以确保类型安全动态内容等。在这种情况下,您不应该使用:path参数,而应该使用不同的路由来执行不同的操作,例如:

GET     /home           controllers.Application.home
GET     /register       controllers.Application.register

行动:

public static Result home() {
    return ok(home.render());
}
public static Result register() {
    return ok(register.render());
}

加密广告:使用 Intellij - 为操作和路由创建模板,您将在几毫秒内完成;)

另一方面,如果您有大量 HTML 文件,则可以将它们呈现为...文件而不是像(伪代码,自己调试!

public static Result show(String page) {
    File htmlFile = new File(page+".html");
    if (!htmlFile.exists()) htmlFile = new File("home.html");
    return ok(htmlFile).as("text/html");
}

我只想补充一点,这绝对不是 Play 使用模板的方式;)

最新更新