scala是否支持JSR-303验证?

Che*_*rry 3 scala bean-validation

scala是否支持JSR-303验证?

如果是的话 - 你能写一个例子吗?

如果没有 - 是否有在scala类上运行JSR-303验证的变通方法?

sou*_*ica 6

有好消息和坏消息.

好消息是您可以在Scala代码中使用JSR-303注释而没有任何问题.

以下是我之前项目的一个示例,其中所有注释都是JSR-303注释,其中一些是开箱即用的,其中一些是自定义的.

@MessagesValid
class Messages {
  @NotEmpty @Valid
  private var msgs: java.util.List[DeliveredMessage] = _  
  def messages = msgs.asScala

  @ChannelValid 
  var channel: String = _

  var emailFrom: String = _
  var emailReplyTo: String = _

  @PublishAtValid
  var publishAt: String = _
}
Run Code Online (Sandbox Code Playgroud)

注意msgs集合是如何的java.util.List.它需要一个Java集合的@NotEmpty@Valid工作.但是很容易将该字段暴露为Scala集合JavaConverters.

坏消息是您无法使用Scala创建JSR-303注释.您必须使用Java编写这些注释.因此,如果要编写自定义JSR-303注释,则需要具有混合Scala/Java项目.

Scala错误跟踪器中存在一个旧错误(错误#32!)以支持这些类型的注释,但它目前已关闭,因为无法修复.无论如何,请投票.