Java playframework2.0中的自定义标记或在模板中执行相等操作

Java playframework2.0中的自定义标记或在模板中执行相等操作,java,playframework-2.0,Java,Playframework 2.0,我需要在模板中执行equals比较,以便进行条件渲染 例如,我有。在这里,我只希望在@request.path和@controllers.routes.Application.action()相等时呈现active,否则可以使用空白字符串 中所述的if语句似乎在识别偏执方面受到限制,因此不起作用 或者,如果您可以帮助我创建一个自定义标记,这也可以工作。没有关于如何做到这一点的文档。我更喜欢java。如果有scala的替代方案,请在冗长方面犯错,因为我还没有弄清楚 谢谢。如果没有自定义标记,您可以

我需要在模板中执行equals比较,以便进行条件渲染

例如,我有
  • 。在这里,我只希望在
    @request.path
    @controllers.routes.Application.action()
    相等时呈现active,否则可以使用空白字符串

    中所述的if语句似乎在识别偏执方面受到限制,因此不起作用

    或者,如果您可以帮助我创建一个自定义标记,这也可以工作。没有关于如何做到这一点的文档。我更喜欢java。如果有scala的替代方案,请在冗长方面犯错,因为我还没有弄清楚


    谢谢。

    如果没有自定义标记,您可以在模板中尝试以下操作:

    <li class="@("active".when(request.path == controllers.routes.Application.action().toString()))">
    
  • 示例应用程序中有一个示例(samples/java/forms/app/views/main.scala.html)。
    不要忘记toString(),因为action()返回的是调用,而不是字符串)。

    要执行此操作的自定义标记可以是:

    @menu_element(name: String, route: Call) = {
     <li class="@("active".when(route.toString() == request.path))"><a href="@route">@name</a></li>
    }
    
    @菜单元素(名称:字符串,路由:调用)={
    
  • }
    使用示例:

    <ul>
     @menu_element("Home", controllers.routes.Application.index)
    </ul>
    
      @菜单元素(“主”,控制器。路由。应用程序。索引)

    谢谢,工作很有魅力。我使用了标签版本,并做了一个小改动
    @Messages(name)
    并传递了i18n代码。同时将标签放在一个单独的文件中,以便删除
    菜单元素