【问题标题】:Play Framework 2.5 - Reverse route to a variable in .java file from scala.html filePlay Framework 2.5 - 从 scala.html 文件反向路由到 .java 文件中的变量
【发布时间】:2017-03-30 16:36:13
【问题描述】:

我正在尝试重构我的控制器和 scala.html 文件,以减少从 Java 控制器类传递到 scala.html 前端文件的参数数量。

我的计划是重构代码,以便 scala.html 文件可以将路由反向路由回 Java 文件中的变量,而不是将 Java 类中的变量传递给 scala.html。

例如而不是这个:

@(someInteger: Int, someString: String, stringList: List[String], anotherInteger: Int)

只有一两个变量:

@(someInteger: Int, someString: String)

并对 scala.html 文件中需要的其他变量使用反向路由,如下所示:

@routes.SomeController.SomeMethod

另外,我想在 scala.html 文件中为其中一些变量添加一个 scala 比较,例如:

@if(@routes.SomeController.SomeMethod == true){
    ...
}

上述方法在从 Java 控制器类作为 scala 变量传入时有效,但在尝试从 scala.html 反向路由时(当前)无效。

值得注意的是,在conf/routes文件中已经设置了controllers.SomeController.SomeMethod的/GET路由,我认为这是一个语法或逻辑问题。

任何通过从 scala.html 反向路由访问变量的帮助将不胜感激!

【问题讨论】:

    标签: java scala playframework twirl


    【解决方案1】:

    在您的控制器上,您可以使用附加到当前请求的地图,如下所示:ctx().args.put("key", "value");

    在您的视图中,您可以访问放置在地图上的数据,如下所示: @Controller.ctx().args.get("key").

    【讨论】:

    • 这看起来和我习惯的语法不同,你确定这是为 play 2.5 反向路由到变量(单个整数或字符串变量而不是映射)的语法吗?假设我在一个返回 int 的控制器类中有一个方法,我将如何从 scala.html 文件中访问该方法,以便例如在视图上输出它?
    • 是的,它是 2.5。 javadocs 这是我在不使用参数的情况下将数据从控制器传递到视图的唯一方法。您也可以通过 form 实例传递,但我认为这对您的情况不利。
    • 好的,谢谢你,我会去实现它,让你知道我的进展:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多