【问题标题】:How is @ used in the play Framework?在play框架中@是如何使用的?
【发布时间】:2016-10-06 15:04:51
【问题描述】:

我目前正在学习播放框架,并且我在一些教程视频中看到人们在声明之前使用 @。

例如在 index.html 文件中:

@main 

@ message

@ 是做什么的?它是如何在 html 文件中使用的?它让我想起了 JQuery 中的很多 $。

【问题讨论】:

  • 这些都是不同的用法。请更具体。
  • 我认为作者是指 Play Framework 模板中使用的@playframework.com/documentation/2.5.x/ScalaTemplates#Overview 与 scala(或 java?)源代码中的 @。所以它不是重复的。
  • @pedrofurla 如果您可以编辑此问题来解释这一点,它将极大地帮助 OP。现在很难说这个问题在问什么。
  • @pedrofurla 如果您觉得这样做很舒服,请编辑问题以解决 playframework。如果这就是这个问题的意义所在,我看不出提及 Java 及其注释的相关性。然后我们可以投票重新开放。目前还不清楚。
  • @ryanyuyu,我相信我的问题很清楚。如果一个人不知道要寻找什么,也很难更具体和更精英。 + 没有人希望你给出一个完整而完美的答案,这教会了我关于编程的一切。如果你想让我自己做研究,嗯,是的,但是找到一些东西,当你不寻找有点难的东西时 + 谷歌搜索@ 不一定有帮助。

标签: html scala playframework


【解决方案1】:

在第一种情况下,即@Entity@Id,它们是Java annotations - 它们在 Java 类中用于不同的目的(根据它们的目标)。你可能是 Ebean 模型的一部分,查看its docs 看看他们做了什么,示例:

package models;

import java.util.*;
import javax.persistence.*;

import com.avaje.ebean.Model;
import play.data.format.*;
import play.data.validation.*;

@Entity
public class Task extends Model {

    @Id
    @Constraints.Min(10)
    public Long id;

    @Constraints.Required
    public String name;

    public boolean done;

    @Formats.DateTime(pattern="dd/MM/yyyy")
    public Date dueDate = new Date();

    public static Finder<Long, Task> find = new Finder<Long,Task>(Task.class);
}

Twirl 模板中使用的第二个at 通常表示命名变量或动态语句的开头,即:

<title>@pageTitle</title>
<ul>
  @for((item, index) <- myItems.zipWithIndex) {
    <li>Item @index is @item</li>
  }
</ul>

其中@pageTitle@index@item = 变量,
@for(...){ ... } 这只是一个循环块,注意myItems 不需要@ 符号,因为它被识别为Scala论据)

Twirl documentation中有描述

正如您所见,@ char 在这两种情况下都没有任何联系,它们的含义完全不同。

为了更好地理解,首先要熟悉链接的 Twirl 文档,以及一般的 Play 文档。然后研究 Play 团队准备的几个示例应用程序,以了解哪个是哪个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 1970-01-01
    • 1970-01-01
    • 2015-03-14
    • 1970-01-01
    相关资源
    最近更新 更多