Forms play framework 2中表单映射的相关验证
我是否可以为表单创建映射,其中第一个验证依赖于第二个值Forms play framework 2中表单映射的相关验证,forms,validation,playframework-2.0,Forms,Validation,Playframework 2.0,我是否可以为表单创建映射,其中第一个验证依赖于第二个值 val orderForm = Form( mapping( "requiredDelivery" -> boolean, "deliveryAddress" -> text, "comment" -> text) (Order.apply)(Order.unapply) ) 如果requiredDelivery为true,我想检查deliveryAddress是否为n
val orderForm = Form(
mapping(
"requiredDelivery" -> boolean,
"deliveryAddress" -> text,
"comment" -> text)
(Order.apply)(Order.unapply)
)
如果requiredDelivery
为true
,我想检查deliveryAddress
是否为nonEmptyText
,请尝试:
val orderForm = Form(
mapping(
"requiredDelivery" -> boolean,
"deliveryAddress" -> text,
"comment" -> text)
(Order.apply)(Order.unapply) verifying("Address is required!", fields => fields match {
case order => (order.requiredDelivery && order.deliveryAddress!="") || !order.requiredDelivery
})
)
由于映射定义进入“全局错误”之后的“验证”子句而导致的任何表单验证错误。表单帮助程序不会显示这些错误,因此任何典型模板都会显示为空白,但无法成功提交表单 修复方法是向表单模板中添加如下内容:
@if(userForm.hasGlobalErrors) {
<ul>
@for(error <- userForm.globalErrors) {
<li>@error.message</li>
}
</ul>
}
@if(userForm.hasGlobalErrors){
@对于(错误),我首先尝试了它(文档中的示例),但问题是validatin的结果是一个常见错误,字段没有错误。如何将字段标记为
空错误字段=>字段匹配{case order=>(order.requiredDelivery&&order.deliveryAddress!=“”)| | |!order.requiredDelivery}
将更容易fields=>fields.requiredDelivery&&!fields.deliveryAddress.isEmpty | |!fields.requiredDelivery
。我还尝试了:-)发现了相同的问题我认为您不能仅通过检查deliveryAddress来实现这一点,因为您需要requiredDelivery的值来决定是否抛出错误,验证需要是全局验证。