Scala 模板播放框架中的 if 语句

if statement in scala template play framework

嘿伙计们我正在尝试为用户发送一个值,如果他已经登录,而不是我在主页 scala 模板中执行一个 if 语句

 User loggeduser = User.find.query().where().eq("token", 
 session("connected")).findOne();
 return ok(main.render(loggeduser));

在 Scala 主页模板中我正在尝试这样的事情

@(user: User)
@if(user.fname==null){ i even tried @if(user.isEmpty)

并尝试将 fname 保留在外部,但对于 NULL POINTER EXEPTION 出现相同的错误 然后显示一些登录表单链接

}else(user!=null){
<a class="dropdown-toggle" data-toggle="dropdown" id="signHover">@user.fname</a>

}

有什么建议请指导我抛出过程

参考:https://www.playframework.com/documentation/2.6.x/JavaTemplates

如果没有用户,假设 User 为 null,你不应该

@(user: User)
@if(user!=null){ 
  // do stuff
} else {
  // do stuff for no user
}

在 scala 主页模板中我正在尝试这样的事情

@(user: User)
@if(user.fname==null){ i even tried @if(user.isEmpty)

如果用户可以为空,请使用 Option[User] 而不是 User。在模板中,您可以使用折叠来处理选项。

在 Scala 中使用 null 是一种不好的做法。如果一个变量可以为null,就用Option代替,让它知道一个变量可以为null,表现力高于一切。

@(userOpt:Option[User])

<div>SOME HTML</div>

@userOpt.fold {
    <div>USER ISN'T LOGGED</div>
} { user =>
    <div>USER IS LOGGED! @user</div>
}

<div>SOME HTML</div>