我有以下模板代碼:「值getOrElse不是字符串的成員」 在模板
視圖/ Login.scala.html:
@(loginForm: Form[views.Data])
@import mytemplates.loginform
@Main("") {
email:@loginform(loginForm("email"))
@*email:@loginForm("email").value.getOrElse("xyz")*@
}
視圖/ mytemplates /登錄表單。 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
: class java.lang.String
views/mytemplates/loginform.scala.html:
@emailField.getClass
:類play.core.j.PlayMagicForJava $$不久$ 1
@emailField.value.getClass
:類scala.None $
我在Login.scala.html使用valueOr("")
否則空指針會產生執行異常。顯然他們都是不同的階級。我還沒有使用Play框架,我不確定這意味着什麼。
你可以發佈'loginForm'和'Data'代碼嗎? – Peter
** Data.java **添加到我的問題。 'loginForm'是** Login.scala.html **模板中的參數名稱。 'loginform'是子模板。 – seron