如何在java play框架中检查数据库表是否为空

时间:2016-08-05 17:15:52

标签: java playframework playframework-2.0

我能够从数据库中检索数据,但不能添加条件,当数据库表为空时,该条件将显示警告。

这是我的代码:

index.scala.html

@(formList: List[Users],form: Form[Users])

@main("history") {

    @for(i <- Users.all()) {

        @if(i.client.equalsIgnoreCase("potato")) {

            <Table>
                <tbody>
                    <tr>
                        <td><a href="/#"><i >@i.firstname @i.lastname </i></a></td>
                        <td><a href="/#"><i>@i.phonenumber</i></a></td>
                        <td><a href="/#"><i>@i.amount</i></a></td>
                        <td><a href="/#"><i>@i.doneAt</i></a></td>
                        <td><a href="@routes.Application.edit(i.id)"><i><span class="glyphicon glyphicon-pencil "></span></i></a></td>
                        <td><a href="@routes.Application.delete(i.id) "><i><span class="glyphicon glyphicon-trash "></span></i></a></td>
                    </tr>
                </tbody>
            </table>
        }
    }
}

控制器方法:

public static Result history(long id) {
    Form<Users> taskData = form(Users.class);
    return ok(history.render(Users.all(), taskData));
}

2 个答案:

答案 0 :(得分:2)

tl; dr将User.all()移动到控制器并通过模板参数传递,然后添加if语句以在列表为空时呈现警报。

您必须添加一个if语句来检查用户列表是否为空,如果是,则显示警告。

@if (Users.all().isEmpty) {
  // Show the alert.
}

为了避免两次提取用户,您可以使用defining功能。

@defining(Users.all()) { users =>
  @if (users.isEmpty) {
    // Show the alert.
  }
  @for(user <- users) {
    …
  }
}

但是我强烈建议将用户提取到控制器,并使模板接受用户列表作为参数。这样你就可以保持模板简单了。当它被渲染时,它只会呈现数据,而不是像从数据库中提取记录那样繁重。

最终结果可能如下所示。

模板

@(users: List[Users], formList: List[Users],form: Form[Users])

@main("history") {

    @if (users.isEmpty) {
        <div class="alert">
            …
        </div>
    }

    @for(i <- users) {

        @if(i.client.equalsIgnoreCase("potato")) {

            <Table>
                <tbody>
                    <tr>
                        <td><a href="/#"><i >@i.firstname @i.lastname </i></a></td>
                        <td><a href="/#"><i>@i.phonenumber</i></a></td>
                        <td><a href="/#"><i>@i.amount</i></a></td>
                        <td><a href="/#"><i>@i.doneAt</i></a></td>
                        <td><a href="@routes.Application.edit(i.id)"><i><span class="glyphicon glyphicon-pencil "></span></i></a></td>
                        <td><a href="@routes.Application.delete(i.id) "><i><span class="glyphicon glyphicon-trash "></span></i></a></td>
                    </tr>
                </tbody>
            </table>
        }
    }
}

控制器

public static Result history(long id) {
    Form<Users> taskData = form(Users.class);
    return ok(history.render(Users.all(), Users.MTN(), taskData));
}

答案 1 :(得分:0)

非常感谢@jokka,你的回答对我有帮助。

我只需在模板 index.scala.html

中添加以下行
  @if(formList.isEmpty) {
              <div class="alert">
               <p>Sorry no sold airtime found today</p>
                  </div>
                   }
              @for(i <- Users.all()) {
             .........