如何检查字段构造函数中的元素是null还是空?

时间:2014-04-17 13:09:02

标签: scala playframework playframework-2.0

hasErrors类似

<div class="form-group @if(elements.hasErrors) {error}">

    @** this does not work **@
    @if(!elements.label.isEmpty && elements.label != null)
        <label for="@elements.id">@elements.label</label>
    }

    @elements.input

    @** this does not work **@
    @if(!elements.infos.isEmpty && elements.infos != null) {
      <p class="help-inline">@elements.infos.mkString(", ")</p>
    }

    @if(elements.hasErrors) {
        <p class="help-inline">@elements.errors.mkString(", ")</p>
    }
</div>

即使检查空字符串也没关系。我无法弄清楚如何做。

在视图中:

@inputText(
    loginForm("member"),
    'placeholder -> "email or username",
    '_help -> "",
    '_label -> null,
    'class -> "form-control"
)

我正在使用Play Framework 2.2.x

2 个答案:

答案 0 :(得分:4)

首先,你必须改变你的逻辑。您始终先检查null,否则您可能会尝试在null上调用方法。

其次,如果您在此处发布问题时包含了实际错误,则会有所帮助。不要只是说它&#34;抛出错误&#34;。

从我的快速测试看来,它似乎抱怨Scala的isEmpty课程中不存在Any方法。但是,它确实有一个toString,你可以先调用它来获得你想要的东西。

@if(elements.label != null && !elements.label.toString.isEmpty) {
  ...
}

答案 1 :(得分:1)

我认为你的布尔逻辑有误。您的标题显示“null或empty”,但您的代码显示“not(empty)or not(null)”。

你可能想用“和”代替“或”,即

@if(elements.label != null && !elements.label.isEmpty) {
  <label>...</label>
}