Validation 提升记录:必填字段的值为空,但没有验证错误
我一直在试图弄清楚如何在不手动定义验证的情况下实现这一点,但到目前为止没有任何成功 我有一个Validation 提升记录:必填字段的值为空,但没有验证错误,validation,scala,lift,lift-record,Validation,Scala,Lift,Lift Record,我一直在试图弄清楚如何在不手动定义验证的情况下实现这一点,但到目前为止没有任何成功 我有一个StringField class Foo private()用ObjectIdKey[Foo]扩展了MongoRecord[Foo]{ ... 对象外部ID扩展了StringField(这个,255){ //所有这些似乎都不会对验证产生任何影响: 覆盖def可选值?=错误 是否需要覆盖def?=真 覆盖def defaultValueBox=空 } ... } 现在,当我在Foo上调用.validat
StringField
class Foo private()用ObjectIdKey[Foo]扩展了MongoRecord[Foo]{
...
对象外部ID扩展了StringField(这个,255){
//所有这些似乎都不会对验证产生任何影响:
覆盖def可选值?=错误
是否需要覆盖def?=真
覆盖def defaultValueBox=空
}
...
}
现在,当我在Foo
上调用.validate
时,它不会返回任何错误:
val foo=foo.createRecord
foo.validate匹配{
case Nil=>foo.save
...
}
…并将文档保存到(mongo)数据库中,不使用externalId
所以问题是:有没有办法让Lift自动验证缺少的字段,而无需我手动将内容添加到验证中
编辑:对于Django和Rails等框架提供的开箱即用的生产力类型,我是否考虑得太多了?i、 例如,基本和非常频繁的验证,而不必编写任何东西,只需编写一些声明性属性/标志。如果是,为什么Lift选择不提供这种开箱即用的东西?为什么有人不希望
.validate
自动考虑所有所需的def?=真
/def可选=false
字段?据我所知,在没有明确定义验证的情况下,无法验证字段。optional
和required
不提供验证的原因是并不总是清楚要使用什么逻辑,特别是对于非字符串
字段。Crudify使用required \
值本身来确定是否在生成的UI中将字段标记为required,但这取决于您提供正确的逻辑来确定是否满足要求
验证字段可以非常简单
override def validations = super.validations :: valMinLen(1, "Required!")
或者看看你的另一个问题的答案,关于如何创建一个通用的
必需的特征。我的假设是,考虑到这样一个高效且相对成熟的框架,这样的需求以前会出现一百万次,而且有些东西是开箱即用的。。。但是无论如何,required
和optional
的目的是什么呢?顺便说一句,考虑到所涉及的类型,required
特性的定义并不完全清楚……即使将def验证修改为valMinLen(1,“required”),该示例也不会编译超级验证
;好的,谢谢!顺便说一句,可选
和必需
仅由Crudify使用吗?实际上至少还有一个区别:StringField的默认/初始值框
将包含完整(“”
)而可选
true
将导致为空
<代码>必需\=然而,true | false
没有相同的效果。(与其他字段类型相同)