提升(Scala)表单验证

时间:2013-07-10 08:09:05

标签: forms validation scala lift mapper

我有一个问题,我无法在网络的任何地方找到答案。我在Scala上编写了一个基于电梯的Web应用程序。我的应用程序中有一个由代码片段驱动的表单。我将Mapper用于我的模型,并使用override def validations ...来定义模型的验证参数。模板代码如下所示:

<form class="lift:GroupManager.addGroup?form=POST&action=add">
<div class="row collapse" style="width: 30em">
  <div class="small-8 columns">
    <span class="group-name prefix radius"></span>
  </div>
  <div class="small-4 columns">
    <span class="submit button small postfix radius">Add New Group</span>
  </div>
</div>
</span>
</form>

代码段:

def addGroup = {
  object groupName extends RequestVar[String]("")

  def doAddGroup() = {
    val group = Group.create.createdAt(new java.util.Date).groupName(groupName.is)
    group.validate match {
      case Nil => {
        group.save
        S.notice("Group '" + group.groupName.is + "' has been added successfully")
      }
      case errors:List[FieldError] => {
        S.error(errors)
      }
    }
  }

  ".group-name" #> SHtml.text(groupName.is, groupName(_), "id" -> "group-name") &
    ".submit" #> SHtml.submit("Add group", doAddGroup)
}

模型的验证覆盖:

object groupName extends MappedString(this, 700) {
  override def dbColumnName = "group_name"
  override def dbNotNull_? = true
  override def validations = valMinLen(1, S.?("Group name should not be empty!")) _ ::
    valMaxLen(700, S.?("Group name should not be more than 700 characters long!")) _ ::
    valUnique(S.?("Group name should be unique!")) _ ::
    super.validations
}

现在一切都很完美,除了提供无效数据时,S.error用于通知用户有关问题。我想要做的是突出显示数据无效的表单元素(通过应用class =“error”),并在表单元素前面添加一个带有错误消息的<span>元素。使用Lift框架有一种简单的方法吗?或者我应该遍历errors:List[FieldError]并从该数组中获取字段信息,这对我来说似乎不太优雅?

0 个答案:

没有答案