我一直在尝试找出如何在不手动定义验证的情况下执行此操作,但到目前为止没有任何成功。
我有一个 StringField
class Foo private() extends MongoRecord[Foo] with ObjectIdKey[Foo] {
...
object externalId extends StringField(this, 255) {
// none of these seem to have any effect on validation whatsoever:
override def optional_? = false
override def required_? = true
override def defaultValueBox = Empty
}
...
}
现在,当我调用.validate
时Foo
,它不会返回任何错误:
val foo = Foo.createRecord
foo.validate match {
case Nil => foo.save
...
}
...并且文档以no格式保存到(mongo)DB中externalId
。
所以问题是:有没有办法让Lift自动验证缺少的字段,而无需我手动向其中添加内容validations
?
编辑:我是否想过像Django和Rails这样的框架提供的开箱即用的生产力类型呢?即像基本的和非常频繁的验证之类的事情,而无需编写一些声明性属性/标志。如果是的话,Lift为什么选择不提供此类东西呢?为什么会有人不希望.validate
自动考虑到所有的def required_? = true
/def optional_? = false
领域?
据我所知,如果没有显式定义验证,就无法验证字段。其原因optional_?
和required_?
不提供验证的是,它并不总是很清楚什么逻辑来使用,尤其是对于非String
领域。该required_?
值本身使用Crudify确定是否在所生产的UI需要标记字段,但是它给你提供了正确的逻辑,以确定该条件成立。
验证字段就像
override def validations = super.validations :: valMinLen(1, "Required!")
或在此处查看有关其他问题的答案,以了解如何创建通用Required
特征。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句