javax.la validation.UnexpectedTypeException: HV000030: Pas de validateur n'a été trouvé pour le type: java.lang.Entier
Je dois prendre une entrée pour paper_name
et date_of_birth
comme int
et date
type de données, respectivement, à partir d'un formulaire.
Ci-dessous le code:
<li> Number:<input type="text" name="paper_number" ></li>
< li>date of birth: <input type="text" name="date_of_birth"></li>
J'ai paperNumber
et dateOfBirth
variable dans le contrôleur comme l'int et la Date de types de données, respectivement.
Merci de m'aider à changer le type de données de paper_number et date_of_birth de la chaîne d'int et de la date, respectivement.
J'ai vu d'autres réponses sur stackoverflow et ils ont utilisé jstl pour le même, mais je ne suis pas en mesure de comprendre comment l'appliquer ici.
Contrôleur de code:
@RequestMapping(value = "/student" , params = "add", method = RequestMethod.POST )
public String postAddStudent(
@RequestParam("date_of_birth" ) Date date,
@RequestParam("paper_number" ) int paperNumber)
Ci-dessous est la EntityClass
public class EntityClass extends BaseEntity {
@Column(name = "DATE_OF_BIRTH", nullable = false)
@NotBlank
@DateTimeFormat(pattern = "dd-mm-yyyy")
private Date dateOfBirth;//TODO
@Column(name = "PAPER_NUMBER")
private short paperNumber;
..
}
Ci-dessous est le journal
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is javax.validation.UnexpectedTypeException: HV000030: No validator could be found for type: java.lang.Integer.
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:894)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:113)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
root cause
javax.validation.UnexpectedTypeException: HV000030: No validator could be found for type: java.lang.Integer.
org.hibernate.validator.internal.engine.ConstraintTree.verifyResolveWasUnique(ConstraintTree.java:394)
org.hibernate.validator.internal.engine.ConstraintTree.findMatchingValidatorClass(ConstraintTree.java:375)
org.hibernate.validator.internal.engine.ConstraintTree.getInitializedValidator(ConstraintTree.java:333)
org.hibernate.validator.internal.engine.ConstraintTree.validateConstraints(ConstraintTree.java:155)
org.hibernate.validator.internal.engine.ConstraintTree.validateConstraints(ConstraintTree.java:125)
org.hibernate.validator.internal.metadata.core.MetaConstraint.validateConstraint(MetaConstraint.java:86)
org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraint(ValidatorImpl.java:442)
org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForDefaultGroup(ValidatorImpl.java:387)
org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForCurrentGroup(ValidatorImpl.java:351)
org.hibernate.validator.internal.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:303)
org.hibernate.validator.internal.engine.ValidatorImpl.validate(ValidatorImpl.java:133)
org.hibernate.cfg.beanvalidation.BeanValidationEventListener.validate(BeanValidationEventListener.java:136)
org.hibernate.cfg.beanvalidation.BeanValidationEventListener.onPreInsert(BeanValidationEventListener.java:94)
org.hibernate.action.internal.EntityIdentityInsertAction.preInsert(EntityIdentityInsertAction.java:178)
org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:75)
org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:362)
org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:203)
org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:183)
org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:167)
org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:320)
org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:287)
org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:193)
org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:126)
org.hibernate.ejb.event.EJB3MergeEventListener.saveWithGeneratedId(EJB3MergeEventListener.java:71)
org.hibernate.event.internal.DefaultMergeEventListener.saveTransientEntity(DefaultMergeEventListener.java:236)
org.hibernate.event.internal.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:216)
org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:154)
org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:910)
org.hibernate.internal.SessionImpl.merge(SessionImpl.java:892)
org.hibernate.engine.spi.CascadingAction$6.cascade(CascadingAction.java:288)
org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:380)
org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:323)
org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:208)
org.hibernate.engine.internal.Cascade.cascade(Cascade.java:165)
org.hibernate.event.internal.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:423)
org.hibernate.event.internal.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:213)
org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:154)
org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:76)
org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:900)
org.hibernate.internal.SessionImpl.merge(SessionImpl.java:884)
org.hibernate.internal.SessionImpl.merge(SessionImpl.java:888)
org.hibernate.ejb.AbstractEntityManagerImpl.merge(AbstractEntityManagerImpl.java:879)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:497)
org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:365)
com.sun.proxy.$Proxy41.merge(Unknown Source)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:497)
org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:240)
com.sun.proxy.$Proxy41.merge(Unknown Source)
org.springframework.data.jpa.repository.support.SimpleJpaRepository.save(SimpleJpaRepository.java:329)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:497)
org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.executeMethodOn(RepositoryFactorySupport.java:368)
org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:349)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:155)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
com.sun.proxy.$Proxy53.save(Unknown Source)
in.ac.jmi.controllers.AdminController.postAddStudent(AdminController.java:262)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:497)
org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:113)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
- Êtes-vous de l'utilisation d'hibernate comme ORM?
- oui, a ajouté le code pour le même.
- Voir mon answer
Vous devez vous connecter pour publier un commentaire.
Espère que vous êtes en utilisant la validation en veille prolongée comme ça,
@NotBlank
est de type String. Il n'y a pas de notion dejava.util.Date
d'être vide. Il peut être null ou not null.. l'Utilisation@NotNull
au lieu de cela,Voir Balus répondre et @NotBlank pour plus de détails.
Mise à jour
Pour l'erreur ci-dessus dans le type de Date essayez d'ajouter
@DateTimeFormat
d'annotation et de mentionner le format de la date vous donner en entrée (direyyyy-mm-dd
). Comme ci-dessous,Date
etint
type essayer avecString
type. La question est de contrôleur de ne pas obtenir de la valeur, comme le type attendu.@ModelAttribute
paramètre, Si vous êtes à la liaison d'un paramètre de la requête à un champ. Voir Référence@DateTimeFormat
annotation. Il va travailler.eh bien, si vous n'êtes pas en utilisant un framework comme spring mvc ou le contrôleur , alors vous devez faire de votre auto. Paramètre de la requête est toujours envoyé comme chaîne de caractères à côté serveur. Maintenant, si certains de cadre de travail peut le faire avant l'arrivée des demandes dans votre contrôleur dans le cadre de votre intercepteur. Sinon, vous devrez le faire manuellement après l'obtention de
request.getParameter("param_name")
Si vous souhaitez restreindre l'entrée qui est entré par l'utilisateur, vous devrez utiliser Javascript pour restreindre le type d'entrée (Vous pouvez utiliser jQuery plugin validator pour cela).
Ou autre, si vous voulez convertir l'entrée par l'utilisateur en entier et jour, dans votre formulaire d'action (servlet, peut-être), vous devez analyser les entier en utilisant
que pour la Date, l'utilisation SimpleDateFormat API.
Références:
Je ne suis pas sûr, mais ce que je soupçonne est
private short paperNumber;
est le problème.. La demande de cartographie cartographie est la même en Entier, vous ne savez Pas comment le déclassement Entier à la petite int fonctionne en mode veille prolongée.