1

我正在尝试使用 Twirl and Play 2.3 创建某种class="active"功能,但我找不到一个有效的解决方案,它很短并且不会把我的 Intellij 语法扔到所有地方。

这是我目前拥有的:

<ul class="nav navbar-nav">
    <li @(if (request.uri == "/") Html("""class="active""""))><a href="@routes.Application.home()">Home</a></li>
    <li @(if (request.uri == "/about") Html("""class="active""""))><a href="@routes.Application.about()">About</a></li>
    <li @(if (request.uri == "/features") Html("""class="active""""))><a href="@routes.Application.features()">Features</a></li>
</ul>

这就是 Intellij 的想法: Intellij 截图

4

1 回答 1

1

是的,IntelliJ 有时会与视图的语法混淆,无论如何您可以创建即自定义 util 来添加(或不添加)活动类(Java 示例)

package utils;

import play.api.templates.Html;
import play.mvc.Http;

public class AttrHelpers {
    public static Html setActiveClass(String requiredPath, Http.Request request) {
        return (requiredPath.equals(request.uri())) ? Html.apply("class=\"active\"") : null;
    }
}

因此,您可以在您的视图中使用它,例如:

<li @utils.AttrHelpers.setActiveClass("/about", request) >
    <a href="@routes.Application.about()">About</a>
</li>

<li @utils.AttrHelpers.setActiveClass("/features", request) >
    <a href="@routes.Application.features()">Features</a>
</li>
于 2014-08-25T17:19:58.523 回答