Mam formularz z 2 polami - empno
i name
. Oba zapełniają się wartością domyślną. Podczas wyświetlania chcę, aby empno
był tylko do odczytu, a edycja name
.Jak utworzyć pole tylko do odczytu w widoku
Podczas tworzenia widoku używam @leaveform.value.get.empno
do wyświetlania tylko gotowego i działa poprawnie. Problem występuje tylko podczas wstawiania z błędem ([NoSuchElementException: None.get])
.
Pytania:
- problem jest powrót błąd nie posiada właściwość wartość. Co jeszcze mogę użyć, aby uzyskać wartość? Czy można pominąć dla pola tylko do odczytu?
Patrz poniżej mojego kodu:
// ***** CONTROLLER *****//
val leaveform = Form[LeaveModel](
mapping(
"empno" -> nonEmptyText,
"name" -> nonEmptyText
)((no, empno) => LeaveModel(empno, name))
((leave: LeaveModel) => Some(leave.empno, leave.name))
)
def create = withAuth { username => implicit request =>
// Define default values
val empno = "STUDENT"
val name = ""
// Set default values
val filledForm = leaveform.fill(LeaveModel(empno,name))
Ok(html.leave.form(filledForm))
}
def insert = Action (
implicit request => {
leaveform.bindFromRequest.fold(
error => {
BadRequest(html.leave.form(error)) // Question 1. Here is the error.
},
leave => {
LeaveModel.insert(leave)
Redirect(routes.indexController.index())
}
)
}
)
// ***** VIEW START***** //
@(leaveform: Form[LeaveModel])
@leaveform.value.get.empno
@helper.form(
action = (routes.LeaveController.update(oid)),
'id -> "leaveform") {
@inputText(leaveform("empno")) // Question 2.
@inputText(leaveform("name"))
}
Używam Scala 2.0.3 i th ere nie jest metodą polową. Mój kod -> pole "leaveform.field (" status "). Wartość" i błąd powrotu "nie jest członkiem play.api.data.Form [models.LeaveModel]". –
hmm .. Używam java, ale doktorzy mówią: Masz również dostęp do oryginalnego pola przy użyciu @ elements.field: http://www.playframework.org/documentation/2.0/ScalaFormHelpers. – adis
@SimonSiah spróbuj użyć '@leaveform (" status "). Value" zamiast tego, nie mam doświadczenia z Scala Forms, w każdym razie to powinno działać. – biesior