есть простая форма в Lift Framework и класс с методом render, который обрабатывает форму:
def render(xhtml:NodeSeq) = {
var name = ""
var role = ""
var human = ""
def register = {
val person = new Person
person.name = name
person.role = role
person.human = if (human == "yes") "true" else "false"
model.create(person)
S.redirectTo("/index")
}
bind("user",
xhtml,
("name" -> SHtml.text(name, name = _)),
("role" -> SHtml.text(role, role = _)),
("human" -> SHtml.text(human,human = _)),
("submit" -> SHtml.submit("Register",register)))
}
Когда я запускаю этот пример, например. Я получаю доступ к URL, который привязан к соответствующей форме, я получаю следующую ошибку:
Message: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Number
...
...
...
epsilon.sjbs.CrudModel$class.create(Sjbs.scala:14)
epsilon.sjbs.PersonModel.create(Sjbs.scala:7)
<b>epsilon.snippet.PersonSnippet.register$1(Snippet.scala:33)</b>
epsilon.snippet.PersonSnippet.render(Snippet.scala:41)
это похоже на то, что метод register запускается, даже если нет нажатия на submit, просто доступ к URL. Почему?
РЕДАКТИРОВАТЬ: это мое первоначальное лицо
@NamedQuery(name = "findAll", query = "select x from Person x")
@Entity class Person extends Id with Name{
@OneToMany(mappedBy="person", cascade=Array(CascadeType.REMOVE))
var participated:java.util.List[Participant] = new java.util.ArrayListParticipant
var role:String = Role.User
var human:String = _
}