关于在Play框架的视图类中使用@的困惑

时间:2017-01-07 06:27:37

标签: scala playframework twirl

我主要猜测如何在Play中使用@。如果我在if(之间没有空格,则会编译以下代码,但不会编译。另外,我必须使用@作为if,但不能使用else或结束括号。

问题:

  1. 我不应该将@用于Scala编写的所有代码吗?

  2. 在Play框架视图中使用@有哪些规则?

  3. 这不编译:

    @if (userForm.value.isDefined) { 
    

    这样做:

    @if(userForm.value.isDefined) {
              <h1>@userForm.get.name (userForm.get.age)</h1>
              <h2>Lives at @userForm.get.address.fullStreet</h2>
            **} else { //no @ required!**
                <h1>Feed User Data</h1>
                @helper.form(action=routes.Data.post){
                @helper.inputText(userForm("name"))
                <input type="submit" name="send" value="submit"/>
                } **//no @ required for closing braces!**
            }
    

1 个答案:

答案 0 :(得分:1)

模板语言中的特殊字符JSON.parse通常称为the magic charactertwirl(与Play模板引擎一样)。作为documentation状态,它表示动态语句的开始。

  

我不能将@用于用Scala编写的所有代码吗?

不,仅针对动态声明开头。正如您已经注意到的那样,您不需要@块的魔术字符@,因为它是else语句的一部分。

  

在Play框架视图中使用@有哪些规则?

我能想到的唯一规则是没有必要显式关闭动态语句。另外,请注意使用if转义@,例如@@

详细了解Play's template enginecommon use cases