2

我有一个问题,我在网络上的任何地方都找不到答案。我有一个在 Scala 上编写的基于 Lift 的 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]并从该数组中获取字段信息,这对我来说似乎不太优雅?

4

0 回答 0