我可以为表单创建映射,其中第一个验证取决于第二个值吗?
val orderForm = Form(
mapping(
"requiredDelivery" -> boolean,
"deliveryAddress" -> text,
"comment" -> text)
(Order.apply)(Order.unapply)
)
如果deliveryAddress
为nonEmptyText
requiredDelivery
true
答案 0 :(得分:0)
尝试:
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
})
)
答案 1 :(得分:0)
映射定义进入“全局错误”后,“验证”子句导致的任何表单验证错误。表单助手不会显示这些错误,因此任何典型的模板都会显示为空白但无法成功提交表单。
修复方法是在表单模板中添加以下内容:
@if(userForm.hasGlobalErrors) {
<ul>
@for(error <- userForm.globalErrors) {
<li>@error.message</li>
}
</ul>
}
您可以通过查看此页面并跳至“在视图模板中显示错误”部分了解更多信息 - http://www.playframework.com/documentation/2.3-SNAPSHOT/ScalaForms