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

使用spring mvc的scala中的JSR303 ConstraintValidator

胡鸿禧
2023-03-14

我已经混合了斯卡拉-Java spring-引导mvc项目。我试图使用javax.validation.constraintvalidator
实现请求bean的自定义验证器,我从这里和其他线程中了解到,用Java编写注释更好,scala支持JSR-303验证吗?

我用Java编写了自定义约束注释,用scala编写了ConstraintValidator类,但当我指定@Constraint(validatedBy=ScalacustomerValidator.class)时,它给出了类型不匹配的编译错误:无法从类 转换为类<?extends ConstraintValidator<?,?>>[] 。我的ScalaCustomerValidator确实扩展了ConstraintValidator。

//Java

@Constraint(validatedBy = ScalaCustomerValidator.class) //Type mismatch error 
@Target(value = ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface ScalaCustomerValid {
    String message() default "Invalid tab to filter combination";
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};
}

//ConstraintValidator的Scala定义

class ScalaCustomerValidator extends ConstraintValidator[ScalaCustomerValid, ScalaCustomer] { .. }

javap输出:

javap ScalaCustomerValidator
Warning: Binary file ScalaCustomerValidator contains com.ScalaCustomerValidator
Compiled from "ScalaCustomerValidator.scala"
public class com.ScalaCustomerValidator implements javax.validation.ConstraintValidator<com.ScalaCustomerValid, com.ScalaCustomer> {
  public void initialize(com.ScalaCustomerValid);
  public boolean isValid(com.ScalaCustomer, javax.validation.ConstraintValidatorContext);
  public boolean isValid(java.lang.Object, javax.validation.ConstraintValidatorContext);
  public void initialize(java.lang.annotation.Annotation);
  public com.ScalaCustomerValidator();
}

共有1个答案

阎宝
2023-03-14

您的问题是由于无法获得scala对象的类造成的。Scala编译器为对象ScalaCustomerValidator生成名为ScalaCustomerValidator$的类。ScalaCustomerValidator$实际上实现了ConstraintValidator,没有办法引用它的类。如果您在Scala中尝试:

val cl = classOf[ScalaCustomerValidator]

您也会得到编译错误。

此问题仍未解决:https://issues.scala-lang.org/I#browse/SI-2453

 类似资料:
  • 从SBT到Scala-IDE的路径在很多地方都有很好的描述: 从SBT项目开始 添加SBT插件定义:addSbtPlugin(“com.typesafe.sbteclipse”%“sbteclipse-plugin”%“2.1.0-rc1”) 从SBT内运行'eclipse'命令 使用已安装的Scala-IDE加载项打开Eclipse 导入项目 什么是反向的?如果我在Scala-IDE中启动了一个

  • 本文向大家介绍SpringMVC ModelAndView的用法使用详解,包括了SpringMVC ModelAndView的用法使用详解的使用技巧和注意事项,需要的朋友参考一下 (一)使用ModelAndView类用来存储处理完后的结果数据,以及显示该数据的视图。从名字上看ModelAndView中的Model代表模型,View代表视图,这个名字就很好地解释了该类的作用。业务处理器调用模型层处理

  • 这是我的控制器: 在上面的If-Guard中,我想要实现的是,如果vehicle对象没有LicensePlate成员,则发回相应的HTTP状态头冲突或其他东西。 我来自一个节点和Express后台,我被用来设置我的头,发送响应和完成它。然而,在这种情况下(JPA)它似乎不起作用。有什么想法吗?

  • 我在Scala2.11.1和Hzaelcast 3.5中使用kryo进行序列化。我试图将数据放在hazelcast映射中,但我得到了KryoException 下面是我的用户类序列化程序 现在,当我将用户类对象从Hcast客户端放入相应的映射中时,如下所示 它给了我这些例外: 以下是中的 请帮帮我!!

  • (这里的新手垂涎三尺)我一直在寻找将对象(事实)加载到工作内存并通过规则修改它们的方法。根据我目前的发现,我认为我应该在规则结果中使用“修改”指令,但找不到太多关于它的信息。我还遇到了一个使用modifyObject的链接,该链接假定包含2个参数,将旧对象替换为新对象[http://legacy.drools.codehaus.org/Working内存]。 考虑到我使用的是Scala对象(即不可

  • 我正在尝试运行一个用scala编写的mapreduce程序。我已经在类路径中包含了scala库。运行程序时,我的程序抛出以下错误。 $hadoop jar~/HadoopScala。jar com。学习火花字数/输入/字数输入。csv/output-libjars ~/lib/org。scala-lang.scala-library\u 2.12.2。v20170412-161608-VFINAL