java - 在Application.java中按名称返回结果 View

标签 java playframework-2.0

在游戏 2.2 中!我正在进行的 Web 项目,我想按 Application.java 中的名称返回 View

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

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

我希望 Application.java 仅使用其名称(字符串页面)返回正确的 View 。

目前我有:

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(String page) 以编程方式查找与参数中给定的 String page 匹配的 View 并返回它(如果未找到匹配,则返回主页)。

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

感谢您的见解:)

最佳答案

请记住,Play 的 View 是一个 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 文件,您可以将它们呈现为...文件,而不是像(伪代码,自己调试!)这样的 Play View

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 使用模板的方式;)

关于java - 在Application.java中按名称返回结果 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22131840/

相关文章:

java - Kotlin 1.2.21 + SimpleXml 2.3.0 - 消费列表错误(必须标记set get方法)

java - 玩!框架 - Evolutions 的数据库问题

java - 您如何运行 SecureSocial 演示?

使用从不同范围导入时的 Scala 类型不匹配问题

java - scala 代码在 playframework-2.0 的 eclipse 中导致错误

java - 当我尝试导入添加到 WEB-INF/lib 的 jar 时,它们无法被识别 : says the package doesn't exist

java - 复杂的 Ebean 查询

java - 在 Android 中放置应用内更新实现的位置

playframework-2.0 - 如何在 Play Framework 中将时区设置为 UTC

java - 在刷新 token 上找不到 AuthenticationProvider - Spring OAuth2 java 配置