Liftことはじめ その7 自作validation
Liftで、validationルールの自作 備忘録
modelクラスの属性に、validationをメソッドをoverride
BandSeqPlayer.scala
package code.model import net.liftweb.mapper._ import net.liftweb.util._ import net.liftweb.common._ object BandSeqPlayers extends BandSeqPlayers with LongKeyedMetaMapper[BandSeqPlayers] class BandSeqPlayers extends Relation with LongKeyedMapper[BandSeqPlayers] with IdPK with OneToMany[Long, BandSeqPlayers] { def getSingleton = BandSeqPlayers … object bandseq extends LongMappedMapper(this, BandSeq) object player extends LongMappedMapper(this, Player) object seq extends MappedLong(this) { override def validations = minVal _ :: super.validations def minVal(in: Long): List[FieldError] = if (in > 0 ) Nil else List(FieldError(this, <li>Seq must be over 1</li>)) }
上記のコードでは、seq属性のvalidationsにminValメソッドを追加。
minValメソッドは、0以下に数値をエラーとする。
利用側では、
validateの結果が、errorsとなる。
bandSeqPlayers.validate match { case Nil => { bandSeqPlayers.save S.notice(msg) S.redirectTo(path) } case errors => { S.error(errors) S.redirectTo(path) } }