2017-08-27 295 views
-1

我想在特定字段上使用javax/hibernate自定义验证。但出现错误javax.validation.ConstraintDefinitionException:HV000074

javax.validation.ConstraintDefinitionException:HV000074:com.hertz.digital.hertzrac.model.Code包含约束注释,但不包含有效内容参数。 at org.hibernate。org.hibernate.validator.internal.metadata.core.ConstraintHelper.assertPayloadParameterExists(ConstraintHelper.java:427)〜[hibernate-validator-5.3.5.Final.jar:5.3.5.Final] at org.hibernate。 validator.internal.metadata.core.ConstraintHelper.isConstraintAnnotation(ConstraintHelper.java:407)〜[hibernate-validator-5.3.5.Final.jar:5.3.5.Final] at org.hibernate.validator.internal.metadata。 provider.AnnotationMetaDataProvider.findConstraintAnnotations(AnnotationMetaDataProvider.java:582)〜[hibernate-validator-5.3.5.Final.jar:5.3.5.Final] at org.hibernate.validator.internal.metadata.provider.AnnotationMetaDataProvider.findConstraints( AnnotationMetaDataProvider.java:535)〜[hibernate-validator-5.3.5.Final.jar:5.3.5.Final] at org.hibernate.validator.internal.metadata.provider.AnnotationMetaDataProvider.findPropertyMetaData(AnnotationM (AnnotationMetaDataProvider.java:227) 〜[hibernate-validator-5.3.5.Final.jar:5.3.5.Final] at org.hibernate.validator.internal.metadata.provider.AnnotationMetaDataProvider.retrieveBeanConfiguration(AnnotationMetaDataProvider.java:137)〜[hibernate-validator- 5.3.5.Final.jar:5.3.5.Final] at org.hibernate.validator.internal.metadata.provider.AnnotationMetaDataProvider.getBeanConfiguration(AnnotationMetaDataProvider.java:125)〜[hibernate-validator-5.3.5.Final。 jar:5.3.5.Final] at org.hibernate.validator.internal.metadata.provider.AnnotationMetaDataProvider.getBeanConfigurationForHierarchy(AnnotationMetaDataProvider.java:108)〜[hibernate-validator-5.3.5.Final.jar:5.3.5。最终]在org.hibernate.validator上的org.hibernate.validator.internal.metadata.BeanMetaDataManager.createBeanMetaData(BeanMetaDataManager.java:203)〜[hibernate-validator-5.3.5.Final.jar:5.3.5.Final] 。 internal.metadata.BeanMetaDataManager.getOrCreateBeanMetaData(BeanMetaDataManager.java:231)〜[hibernate-validator-5.3.5.Final.jar:5.3.5.Final] at org.hibernate.validator.internal.metadata.BeanMetaDataManager.isConstrained( (ValidatorImpl.java:194)〜[ hibernate-validator-5.3.5.Final.jar:5.3.5.Final] at org.springframework.validation.beanvalidation.SpringValidatorAdapter.validate(SpringValidatorAdapter.java:118)〜[spring-context-4.3.9.RELEASE。 jar:4.3.9.RELEASE] at org.springframewo rk.boot.autoconfigure.web.WebMvcValidator.validate(WebMvcValidator.java:69)〜[spring-boot-autoconfigure-1.5.4.RELEASE.jar:1.5.4.RELEASE] at org.springframework.validation.DataBinder。验证(DataBinder.java:891)〜[spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE] at org.springframework.web.method.annotation.ModelAttributeMethodProcessor.validateIfApplicable(ModelAttributeMethodProcessor.java:168) 〜[spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE] at org.springframework.web.method.annotation.ModelAttributeMethodProcessor.resolveArgument(ModelAttributeMethodProcessor.java:115)〜[spring-web-4.3。 9.RELEASE.jar:4.3.9.RELEASE] at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)〜[spring-web-4.3.9.RELEASE.jar:4.3。 9.RELEASE] at org.springframework .web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:158)〜[spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE] at org.springframework.web.method.support.InvocableHandlerMethod .invokeForRequest(InvocableHandlerMethod.java:128)〜[spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod。invokeAndHandle(ServletInvocableHandlerMethod.java:97)〜[spring-webmvc-4.3.9.RELEASE.jar:4.3.9.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter。的java:827)〜[弹簧webmvc-4.3.9.RELEASE.jar:4.3.9.RELEASE] 在org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) 〜[spring-webmvc-4.3.9.RELEASE.jar:4.3.9.RELEASE] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)〜[spring-webmvc- 4.3.9.RELEASE.jar:4.3.9.RELEASE] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)〜[spring-webmvc-4.3.9.RELEASE.jar:4.3。 9.RELEASE] at org.springframework.web.servlet.Dis patcherServlet.doService(DispatcherServlet.java:901)〜[弹簧webmvc-4.3.9.RELEASE.jar:4.3.9.RELEASE] 在org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) 〜[spring-webmvc-4.3.9.RELEASE.jar:4.3.9.RELEASE] at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)〜[spring-webmvc-4.3.9。 RELEASE.jar:4.3.9.RELEASE] at javax.servlet.http.HttpServlet.service(HttpServlet.java:635)〜[tomcat-embed-core-8.5.15.jar:8.5.15] at org。 springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)〜[弹簧webmvc-4.3.9.RELEASE.jar:4.3.9.RELEASE] 在javax.servlet.http.HttpServlet.service(的HttpServlet。 java:742)〜[tomcat-embed-core-8.5.15.jar:8.5.15] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFi lterChain.java:231)〜[tomcat-embed-core-8.5.15.jar:8.5.15] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)〜[tomcat-embed- core-8.5.15.jar:8.5.15] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)[tomcat-embed-websocket-8.5.15.jar:8.5.15 ] at org.apache.catalina.core.ApplicationFilterChain org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)〜[tomcat-embed-core-8.5.15.jar:8.5.15] .doFilter(ApplicationFilterChain.java:166)〜[Tomcat的嵌入芯-8.5.15.jar:8.5.15] 在org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55) spring-boot-1.5.4.RELEASE.jar:1.5.4.RELEASE] at org.springframework.web.filter.OncePerRequestF ilter.doFilter(OncePerRequestFilter.java:107)[弹簧网络4.3.9.RELEASE.jar:4.3.9.RELEASE] 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)〜 [tomcat-embed-core-8.5.15.jar:8.5.15] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)〜[tomcat-embed-core-8.5.15.jar :8.5.15] at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:110)[spring-boot-actuator-1.5.4.RELEASE.jar:1.5.4.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)[spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:193)〜[tomcat-embed-core-8.5.15.jar:8.5.15]在org.springframework.web.filter.RequestContextFilter的org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)〜[tomcat-embed-core-8.5.15.jar:8.5.15] 。 doFilterInternal(RequestContextFilter.java:99)[弹簧网络4.3.9.RELEASE.jar:4.3.9.RELEASE] 在org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)[弹簧web-4.3.9.RELEASE.jar:4.3.9.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)〜[tomcat-embed-core-8.5.15.jar: 8.5.15] 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)〜[Tomcat的嵌入芯-8.5.15.jar:8.5.15] 在org.springframework.web。 filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:105)[spring-web-4.3.9。RELEASE.jar:4.3.9.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)[spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)〜[tomcat-embed-core-8.5.15.jar:8.5.15] at org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:166)〜[tomcat-embed-core-8.5.15.jar:8.5.15] at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81)[spring-web- 4.3.9.RELEASE.jar:4.3.9.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)[spring-web-4.3.9.RELEASE.jar:4.3.9 .RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl icationFilterChain.java:193)〜[tomcat-embed-core-8.5.15.jar:8.5.15] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)〜[tomcat-embed- core-8.5.15.jar:8.5.15] at org.springframework.cloud.sleuth.instrument.web.TraceFilter.doFilter(TraceFilter.java:153)[spring-cloud-sleuth-core-1.2.1.RELEASE .jar:1.2.1.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)〜[tomcat-embed-core-8.5.15.jar:8.5.15] at org .apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)〜[tomcat-embed-core-8.5.15.jar:8.5.15] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter .java:197)[spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE] at org.springframework。在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java) :193)〜[tomcat-embed-core-8.5.15.jar:8.5.15] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)〜[tomcat-embed-core-8.5 .15.jar:8.5.15] at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:106)[spring-boot-actuator-1.5.4.RELEASE.jar:1.5.4。发布] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)[spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE] at org.apache.catalina.core .ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)〜[tomcat-embed-core-8.5.15.jar:8.5.15] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)〜[tomcat-embed-core-8.5.15.jar:8.5.15] at org.apache.catalina.core.StandardWrapperValve。 invoke(StandardWrapperValve.java:198)[tomcat-embed-core-8.5.15.jar:8.5.15] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)[tomcat-embed- core-8.5.15.jar:8.5.15] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)[tomcat-embed-core-8.5.15.jar:8.5.15] 在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)[tomcat-embed-core-8.5.15.jar:8.5.15] at org.apache.catalina.valves.ErrorReportValve.invoke( ErrorReportValve.java:80)[tomcat-embed-core-8.5.15.jar:8.5.15] at org.apache.catalina.core.S (标准发行版本.java:87)[tomcat-embed-core-8.5.15.jar:8.5.15] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)[tomcat- embed-core-8.5.15.jar:8.5.15] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799)[tomcat-embed-core-8.5.15.jar:8.5.15 ] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)[tomcat-embed-core-8.5.15.jar:8.5.15] at org.apache.coyote.AbstractProtocol $ ConnectionHandler.process( (Tomcat-embed-core-8.5.15.jar:8.5.15] at org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1455)[tomcat-embed-core-8.5.15.jar: embed-core-8.5.15.jar:8.5.15] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase。java:49)[tomcat-embed-core-8.5.15.jar:8.5.15] at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)[na:1.8.0_131] at java.util.concurrent .ThreadPoolExecutor $ Worker.run(Unknown Source)[na:1.8.0_131] at org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)[tomcat-embed-core-8.5。 15.jar:8.5.15] 在java.lang.Thread.run(未知来源)[NA:1.8.0_131]

自定义接口

import java.lang.annotation.Documented; 
import java.lang.annotation.Retention; 
import java.lang.annotation.Target; 
import java.lang.annotation.ElementType; 
import java.lang.annotation.RetentionPolicy; 
import javax.validation.Constraint; 
import javax.validation.Payload; 

@Constraint(validatedBy = {CustomValidator.class}) 
@Target(ElementType.FIELD) 
@Retention(value = RetentionPolicy.RUNTIME) 
@Documented 
public @interface Code { 
    String message() default "Invalid Limit of Code"; 
    Class<?>[] groups() default {}; 
    Class<? extends Payload>[] palyload() default {}; 


} 

定制的校验

import javax.validation.ConstraintValidator; 
import javax.validation.ConstraintValidatorContext; 

public class CustomValidator implements ConstraintValidator<Code, String>{ 

    @Override 
    public void initialize(Code constraintAnnotation) { 

    } 

    @Override 
    public boolean isValid(String rewardRequest, ConstraintValidatorContext context) { 
     if(rewardRequest.length()<2) 
      return true; 
     else 
      return false; 
    } 

} 

有跟随参考文件。但仍然无法解决。

回答

1

的信息是很清楚的:

com.hertz.digital.hertzrac.model.Code包含约束注解, 但不包含一个有效载荷参数

你只是有一个错字在您的注释类中(palyload而不是​​)。 更换生产线

Class<? extends Payload>[] payload() default {};