我有以下模板代码:
意见/ Login.scala.html:
@(loginForm: Form[views.Data])
@import mytemplates.loginform
@Main("") {
email:@loginform(loginForm("email"))
@*email:@loginForm("email").value.getOrElse("xyz")*@
}
意见/ mytemplates / loginform.scala.html:
@(emailField: Field)
@emailField.value.getOrElse("xyz")
意见/ Main.scala.html:
@(page: String)(content: Html)
<!DOCTYPE html>
<html>
<body>
@content
</html>
意见/ Data.java:
package views;
import play.data.validation.ValidationError;
import java.util.List;
public class Data {
public String email = "";
public Data() { }
public List<ValidationError> validate() {
return null;
}
}
上述编译是成功的。 但是,如果线@*email:@loginForm("email").value.getOrElse("xyz")*@
在Login.scala.html是注释掉编译生成一个value getOrElse is not a member of String
错误。
为什么会出现这种情况? 我想排除模板mytemplates.loginform
,但不能让它开始工作。
编辑:继estmatic的意见,我得到如下:
意见/ Login.scala.html:
@loginForm("email").getClass
:类play.data.Form $场
@loginForm("email").valueOr("").getClass
类java.lang.String
意见/ mytemplates / loginform.scala.html:
@emailField.getClass
:类play.core.j.PlayMagicForJava $$不久$ 1
@emailField.value.getClass
:类scala.None $
我不得不使用valueOr("")
中Login.scala.html否则空指针异常的执行将产生。 显然,他们都是不同的类别。 我没有使用播放框架太多,我不知道这意味着什么。