scala支持JSR-303验证吗?



scala是否支持JSR-303验证?

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

如果没有 -是否有在scala类上运行JSR-303验证的解决方案?

有好消息也有坏消息

好消息是,您可以在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 = _
}

注意msgs集合是一个java.util.List@NotEmpty@Valid需要一个Java集合才能工作。但是使用JavaConverters将该字段公开为Scala集合是很容易的。

坏消息是不能使用Scala创建JSR-303注释。必须使用Java编写这些注释。因此,如果你想编写自定义的JSR-303注释,你需要有一个混合的Scala/Java项目。

Scala bug跟踪器中有一个老bug (bug #32!)支持这些类型的注释,但目前它被关闭为不会修复。无论如何,请投赞成票。

当然!

然而,Scala类型需要自定义注解,以及自定义集合处理。

如果有兴趣,我将开源我的实现。

最新更新