如果scala模板中的语句播放框架

问题描述 投票:0回答:3

嘿伙计们试图为用户发送一个值,如果他已登录,而不是我在主页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 EXCEPTION则显示相同的错误,然后显示一些登录表单链接

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

}

如果有任何建议,请指导我完成整个过程

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

java scala playframework playframework-2.0 twirl
3个回答
1
投票

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

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

0
投票

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

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

0
投票

如果用户可以为null,请使用Option [User]而不是User。在模板内部,您可以使用折叠来处理Option。

在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>
© www.soinside.com 2019 - 2024. All rights reserved.