当前位置: 首页 > 知识库问答 >
问题:

scala支持JSR-303验证吗?

尉迟哲瀚
2023-03-14

scala支持JSR-303验证吗?

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

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

共有2个答案

仲孙宇定
2023-03-14

当然

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

如果有任何兴趣,我会开源我的实现。

景宏富
2023-03-14

有好消息也有坏消息。

好消息是,您可以在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。列表。它需要是一个Java集合,@NotEmpty@Valid才能工作。但使用JavaConverters将该字段公开为Scalahtml" target="_blank">集合非常容易。

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

有一个老臭虫(臭虫#32!)在Scala bug tracker中支持这些类型的注释,但它目前已关闭,无法修复。不管怎样,请投赞成票。

 类似资料:
  • 我的bean中有两个字段 当字段key=“A”,“value”应该跟在其他“key”的特定Regex后面时,它可以是任何内容。 如何根据键定义此值验证。

  • 我使用Spring 3.2.2与Primeface 4.0和Hibernate 4.2。我在我的实体上有JSR303验证注释,并且我配置了Spring来在服务层验证它们——这很好。 但是我希望在调用服务之前启动JSF验证,但事实并非如此。我所做的所有研究都表明,我只需在类路径中添加一个验证程序,JSF2就会自动应用。 我已将建议的JAR添加到我的类路径中: 完整的依赖关系树可以在https://g

  • 我目前正在用Spring开发一个应用程序,使用Hibernate作为ORM。我知道,默认情况下,Hibernate在持久化或加载实体时都会使用JSR-303 Bean验证。由于此应用程序支持草稿(我希望在持久化后执行验证),因此必须将其添加到persistence.xml中: 模型实体代码: 我想知道如何传播bean验证,以便每当MyEntity实例被验证时,所有相关联的bar也被验证,而不必在验

  • 我试图让Kotlin在spring-data-rest项目上使用JSR303验证。 给定以下数据类声明: 提前感谢您的帮助!

  • 我们有一个带有JSR注释的简单bean 我们有一个Spring控制器 我们的问题是,当调用changePassword时,验证器忽略组(PasswordChange.Class)并只验证组中不存在的firstName和lastName。 知道吗?非常感谢你抽出时间。

  • 当我使用ValidationUtil.InvokeValidator验证时 2018-07-06 16:04:09.769错误10223--[nio-8080-exec-1]O.a.C.C.C.[.[.[/].[dispatcherServlet]:路径为[]的上下文中servlet[dispatcherServlet]的servlet.service()引发异常[请求处理失败;嵌套异常为java