我有Product
个案例类,由DAO层返回(使用Salat)。正在创建产品第一次产品状态的用户仍然是“草稿”,其中没有任何字段(产品)是强制性的。
验证10个产品属性的最佳功能方法是什么,将所有验证错误累积到单个实体中,然后以JSON格式一次性将所有错误传递到前端?
答案 0 :(得分:3)
我认为问题的核心是如何累积错误 - JSON格式是一个单独的问题,并不依赖于你如何收集错误。
如果它只是一个验证问题,您可以使用一系列方法
def problemWithX: Option[String] = ...
如果它们无效则返回Some(errorMessage)
;如果它们没有问题,则返回None
。然后它就像
List(problemWithX, problemWithY, ...).flatten
创建所有错误的列表。如果你的清单是空的,你很高兴。如果没有,则列出错误。创建一些合理的错误报告是problemWithX
方法的工作 - 当然,您需要决定是否只需要字符串或更复杂的信息。 (您甚至可能需要定义Invalid
特征并让类扩展它以处理不同的条件。)
答案 1 :(得分:1)
这正是ScalaZ的Validation
类型的用途。