【问题标题】:Play framework: Display data as html table播放框架:将数据显示为 html 表格
【发布时间】:2016-11-26 16:34:04
【问题描述】:

我正在开发一个有几个表的小项目。其中之一是 Person 表,它具有 id 和 name 作为属性。我成功地从数据库中获取结果集(使用 MySql),并且可以将它们转换为 json。但是,我无法找到将 json 显示为 html 表的方法。有没有办法将 Persons 列表传递给 html 并在表格中显示它??

Application.java

public class Application extends Controller {

@Inject
FormFactory formFactory;

public Result index() {
    return ok(index.render());
}

@Transactional(readOnly = true)
public Result getPersons() {
    List<Person> persons = (List<Person>) JPA.em().createQuery("select p from Person p").getResultList();
    return ok(toJson(persons));
}

index.scala.html

 @()
@main("Welcome to Play") {
<script type='text/javascript' src='@routes.Assets.at("javascripts/index.js")'></script>

<ul id="persons"></ul>

//logic to display table
}

index.coffee

$ ->
  $.get "/persons", (persons) ->
    $.each persons, (index, person) ->
      $("#persons").append $("<li>").text person.id + person.name 

这将显示人员对象列表。但我需要显示一个 html 表格

【问题讨论】:

    标签: javascript html mysql json playframework


    【解决方案1】:

    但是,我无法找到将 json 显示为 html 表的方法。有没有办法将 Persons 列表传递给 html 并在表格中显示它??

    您似乎没有很好地阅读 Play 手册。但是,我不会将 JSON 发送到模板。相反,我会通过

    List<Persons> 
    

    (Java Object) 到 scala 模板并使用 Scala 模板语言来显示表格。我想你会从阅读模板帮助页面中受益here.

    请特别注意执行 for 循环的迭代部分。 我会这样做(未经测试):

    index.scala.html

    @(persons: List[Person])
    @main("Welcome to Play") {
    <script type='text/javascript' src='@routes.Assets.at("javascripts/index.js")'></script>
    
    <ul id="persons"></ul>
    
    //logic to display table
    <table>
       @for(person <- persons){
          <tr>
              <td>@person.getName()</td>
              <td>@person.getId()</td>
          </tr>
        }
    </table>
    }
    

    请注意,在 Scala 模板中,不要使用以下语法:

    List<Person>
    

    (就像在 Java 中一样),你使用

    List[Person]  
    

    对于应用程序控制器,将相关部分更改为:

    public Result getPersons() {
        List<Person> persons = (List<Person>) JPA.em().createQuery("select p    from Person p").getResultList();
    return ok(index.render(persons);
    

    这假设您在 Person 类中有两个字段:name 和 id。它还假设您有他们的“获取”方法。如果它们是公共字段,您可以使用@person.name 和@person.id。更改这些变量以匹配您在 Person 类中的内容。

    你不应该需要 index.coffee 。您也不需要 index.scala.html 中的标签(除非您出于其他原因需要它)。

    在上面提到的帮助页面上,您还可以查看“声明可重用块”部分来创建一个可重用块来显示每个 Person 对象。但是,我会先让最简单的版本工作,然后再尝试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-17
      • 1970-01-01
      • 2013-07-08
      • 1970-01-01
      • 2021-10-22
      • 1970-01-01
      相关资源
      最近更新 更多