2013-05-18 2 views
0

Я разработчик Java, который недавно начал изучать Play Framework. Я пытаюсь получить нижеследующий шаблон, но, похоже, не получается. Я получил следующее в моем шаблоне ScalaHTML-атрибут в шаблоне Scala

@navItem(label: String, link1: String) = { 
    @{if (Application.isAuthenticated()) { 
    <li class="active"> 
     <a href="@link1">label</a> 
    </li> 
    } 
    else { 
    <li class="disabled"> 
     <a href="@link1">{label}</a> 
    </li> 
    } 
    } 
} 

Я называю это позже в моем шаблоне, как так

<ul class="nav"> 
@navItem("Search Documents", "/search") 
</ul> 

Сформированная ссылка имеет HREF как localhost:9000/@link1 вместо localhost:9000/search. Я не уверен, что происходит.

PS: Если я изменю свой шаблон, как показано ниже, он отлично работает. Но я хочу понять, почему этот шаблон не работает.

@navItem(label: String, link1: String) = { 
    <li class="@(if (Application.isAuthenticated()) "active" else "disabled")"> 
     <a href="@link">@label</a> 
    </li> 
} 

ответ

4

Не совсем уверен в этом, но мое предположение было бы следующее: @{ ... } указывает на начало динамического заявления и все его содержимое рассматривается как Scala код. Таким образом, это нормальное if-условие с двумя строками в результате, оба из которых просто возвращаются в шаблоне.

Почему вы все равно отмечаете его как многострочный код? Вы пробовали это так? (обратите внимание на отсутствующие фигурные скобки после знака 2 @):

@navItem(label: String, link1: String) = { 
    @if(Application.isAuthenticated()) { 
    <li class="active"> 
     <a href="@link1">@label</a> 
    </li> 
    } else { 
    <li class="disabled"> 
     <a href="@link1">@label</a> 
    </li> 
    } 
} 
+0

Это сработало. Проблема заключалась в том, что вторая фигурная скобка была проблемой. Также пространство после if и newline перед другим давало ошибки в Eclipse. Благодаря!! – aniruddhc

Смежные вопросы