本文整理汇总了Scala中play.api.data.Forms类的典型用法代码示例。如果您正苦于以下问题:Scala Forms类的具体用法?Scala Forms怎么用?Scala Forms使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Forms类的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Scala代码示例。
示例1: ValidationUtils
//设置package包名称以及导入依赖的类
package utils
import java.time.LocalDate
import models.DateComponents
import org.apache.commons.lang3.StringUtils
import play.api.data.format.Formatter
import play.api.data.validation.{Constraint, Invalid, Valid, ValidationError}
import play.api.data.{FieldMapping, FormError, Forms}
import scala.util.{Failure, Success}
object ValidationUtils {
implicit val mandatoryBooleanFormatter = new Formatter[Boolean] {
def bind(key: String, data: Map[String, String]) = {
Right(data.getOrElse(key, "")).right.flatMap {
case "true" => Right(true)
case "false" => Right(false)
case _ => Left(Seq(FormError(key, s"$key.error.boolean", Nil)))
}
}
def unbind(key: String, value: Boolean) = Map(key -> value.toString)
}
val mandatoryBoolean: FieldMapping[Boolean] = Forms.of[Boolean]
val notBlank: (String) => Boolean = StringUtils.isNotBlank
def unconstrained[T] = Constraint[T] { (t: T) => Valid }
def inRange[T](minValue: T, maxValue: T, errorCode: String = "")(implicit ordering: scala.math.Ordering[T]): Constraint[T] =
Constraint[T] { (t: T) =>
assert(ordering.compare(minValue, maxValue) < 0, "min bound must be less than max bound")
(ordering.compare(t, minValue).signum, ordering.compare(t, maxValue).signum) match {
case (1, -1) | (0, _) | (_, 0) => Valid
case (_, 1) => Invalid(ValidationError(s"error$errorCode.range.above", maxValue))
case (-1, _) => Invalid(ValidationError(s"error$errorCode.range.below", minValue))
}
}
def validDate(constraint: Constraint[LocalDate] = unconstrained) = Constraint[DateComponents] {
(dcs: DateComponents) =>
DateComponents.toLocalDate(dcs) match {
case Failure(_) => Invalid(ValidationError("error.date.invalid", dcs))
case Success(localDate) => constraint(localDate)
}
}
def optionallyMatchingPattern(regex: String): Constraint[String] =
Constraint[String] { s: String =>
Option(s) match {
case None | Some("") => Valid
case _ if s.matches(regex) => Valid
case _ => Invalid(ValidationError("error.string.pattern", s))
}
}
}
示例2: FormMapping
//设置package包名称以及导入依赖的类
package controllers
import javax.inject.{Inject, Singleton}
import play.api.data.{Forms, Form}
import play.api.mvc.{Action, Controller}
import play.api.data.Forms._
@Singleton
class FormMapping @Inject() extends Controller {
//Map to Form
def save() = Action { request =>
val data = Map(
"name" -> "Box of paper clips",
"ean" -> "1234567890123",
"pieces" -> "300")
val productForm = Form(
Forms.tuple(
"name" -> Forms.text,
"ean" -> Forms.text,
"pieces" -> Forms.number))
val boundForm = productForm.bind(data)
val success = boundForm.fold(_ => false, _ => true)
boundForm.fold(
formWithErrors => BadRequest,
value => {
doSomethingWithValue(value)
Ok
})
}
def doSomethingWithValue(a: Any) = {}
// Mapping to Form
case class User(username: String, realname: Option[String], email: String)
val userForm = Form(
mapping(
"username" -> nonEmptyText(8),
"realname" -> optional(text),
"email" -> email)(User.apply)(User.unapply))
def createUser() = Action { request =>
val c = userForm.bindFromRequest()(request).fold(
formWithErrors => Forbidden,
user => Ok("User created!" + user))
c
}
def createUserImplicit() = Action { implicit request =>
val c = userForm.bindFromRequest.fold(
formWithErrors => Forbidden,
user => Ok("User created!" + user))
c
}
}