运维开发网

scala – 如何在View中创建只读字段

运维开发网 https://www.qedev.com 2020-05-23 13:09 出处:网络 作者:运维开发网整理
我有一个包含2个字段的表单 – empno和name.两者都填充默认值.在视图中显示时,我希望empno是只读的,名称是可编辑的. 在视图创建中,我使用@ leaveform.value.get.empno来显示就绪并正常工作.问题只发生在插入错误期间([NoSuchElementException:None.get]). 问题: >问题是返回错误没有value属性.还有什么可以用来获得价值? >
我有一个包含2个字段的表单 – empno和name.两者都填充默认值.在视图中显示时,我希望empno是只读的,名称是可编辑的.

在视图创建中,我使用@ leaveform.value.get.empno来显示就绪并正常工作.问题只发生在插入错误期间([NoSuchElementException:None.get]).

问题:

>问题是返回错误没有value属性.还有什么可以用来获得价值?

>我可以跳过@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"))
        }
使用表单助手不是强制性的.如果您使用它们,您可以只读传递属性或使用CSS为字段设置样式,使其看起来只读.

> CSS禁用Twitter引导程序:

@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>

>更新2018-01-24

Play字段现在返回一个Optional,see the docs.这意味着您可以从字段中获取值,如:

> @form(“fieldName”).getValue.get(可以抛出NPE)> @form(“fieldName”).getValue.getOrElse(“defaultValue”)

0

精彩评论

暂无评论...
验证码 换一张
取 消