我有一个包含2个字段的表单-empno
和name
。两者都填满默认值。在 View 中显示时,我希望empno
是只读的,并且name
是可编辑的。
在创建 View 时,我使用@leaveform.value.get.empno
显示仅准备就绪并且可以正常工作。仅在插入时出现问题([NoSuchElementException: None.get])
错误。
问题:
@inputText
吗? 请参阅下面的代码:
// ***** 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"))
}
最佳答案
使用表单帮助程序不是强制性的。如果使用它们,则可以传递属性readonly
或使用CSS设置字段样式以使其看起来是只读的。
@inputText(
editForm("createdOn"),
'id -> "createdOn",
'class -> "input-xlarge disabled",
'_label -> Messages("createdOn"),
'_help -> ""
)
readonly
@inputText(
editForm("createdOn"),
'id -> "createdOn",
'class -> "input-xlarge",
'_label -> Messages("createdOn"),
'readonly -> "readonly",
'_help -> " This is read only"
)
<span class="date">Created on: @editForm("createdOn").value</span>
现在Play字段将返回
Optional
see the docs。这意味着您可以从以下字段中获取值:@form("fieldName").getValue.get
(可以抛出NPE
)@form("fieldName").getValue.getOrElse("defaultValue")
关于scala - 如何在 View 中创建只读字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14342234/