Intellij理解的内联if语句

时间:2014-08-25 15:47:12

标签: scala intellij-idea playframework twirl

我正在尝试使用Twirl和Play 2.3创建某种class="active"功能但是我找不到一个有效的解决方案,这个解决方案很简短,并且不会在整个地方抛出我的Intellij语法。 / p>

这就是我目前所拥有的:

<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的想法: Screenshot of Intellij

1 个答案:

答案 0 :(得分:1)

是的,IntelliJ有时会与view的语法混淆,无论如何你可以创建ie自定义util来添加(或不添加)活动类(Java sample)

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>