简体   繁体   English

Null 指针异常 spring + hibernate 中的自定义验证

[英]Null pointer exception Custom Validation in spring + hibernate

My Custom Validation Classes我的自定义验证类

1.UserAvailablity.java 1.UserAvailablity.java


    package com.vicky.finalYearProject.customValidations;
        
        import java.lang.annotation.ElementType;
        import java.lang.annotation.Retention;
        import java.lang.annotation.RetentionPolicy;
        import java.lang.annotation.Target;
        
        import javax.validation.Constraint;
        import javax.validation.Payload;
        
        @Constraint(validatedBy = UserAvailabilityValidator.class)
        @Target({ElementType.METHOD, ElementType.FIELD})
        @Retention(RetentionPolicy.RUNTIME)
        public @interface UserAvailability {
            
            public String message() default "Email is already Registered";
            
            public Class<?>[] groups() default { };
            
            public Class<? extends Payload>[] payload() default { };
            
        }


2.UserAvailabilityValidator.class 2.UserAvailabilityValidator.class


    package com.vicky.finalYearProject.customValidations;
        
        import javax.validation.ConstraintValidator;
        import javax.validation.ConstraintValidatorContext;
        
        import org.springframework.beans.factory.annotation.Autowired;
        
        import com.vicky.finalYearProject.Service.CheckUserAvailabilityService;
        
        public class UserAvailabilityValidator implements ConstraintValidator<UserAvailability, String>{
        
            @Autowired
            CheckUserAvailabilityService availabilityService;
            
            @Override
            public void initialize(UserAvailability constraintAnnotation) {
                ConstraintValidator.super.initialize(constraintAnnotation);
                
            }
            
            @Override
            public boolean isValid(String email, ConstraintValidatorContext context) {
                
                boolean available = false;
        
                available = availabilityService.isAvailable(email);//return true or false
                        
                return available;
            }
        
        }


My Entities我的实体

  1. User.java用户.java

    package com.vicky.finalYearProject.Entity;
        
        import javax.persistence.Column;
        import javax.persistence.Entity;
        import javax.persistence.GeneratedValue;
        import javax.persistence.GenerationType;
        import javax.persistence.Id;
        import javax.persistence.Table;
        import javax.persistence.UniqueConstraint;
        import javax.validation.Valid;
        import javax.validation.constraints.NotNull;
        import javax.validation.constraints.Pattern;
        
        import org.hibernate.validator.constraints.Length;
        import org.springframework.stereotype.Component;
        
        import com.vicky.finalYearProject.customValidations.UserAvailability;
        
        @Entity
        @Component
        @Table( name = "customers",
                    uniqueConstraints=
                    @UniqueConstraint(columnNames={"email"})
                )
        public class User {
            
            @Id
            @Column(name = "id")
            @GeneratedValue(strategy = GenerationType.IDENTITY)
            private int id;
            
            @NotNull
            @Column(name = "email", length = 50)
            @Pattern(regexp = "^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$")
            @UserAvailability//custom validator
            private String email;
            
            @NotNull
            @Column(name = "password")
            @Length(min = 1 , message = "Enter Valid Password")
            private String password;
            
            @NotNull
            @Column(name = "firstName")
            @Length(min = 1 , message = "Enter Valid firstName")
            private String firstName;
            
            @NotNull
            @Column(name = "middleName")
            @Length(min = 1 , message = "Enter Valid middleName")
            private String middleName;
            
            @NotNull
            @Column(name = "lastName")
            @Length(min = 1 , message = "Enter Valid lastName")
            private String lastName;
            
            public int getId() {
                return id;
            }
        
            public void setId(int id) {
                this.id = id;
            }
        
            public String getEmail() {
                return email;
            }
        
            public void setEmail(String email) {
                this.email = email;
            }
        
            public String getPassword() {
                return password;
            }
        
            public void setPassword(String password) {
                this.password = password;
            }
        
            public String getFirstName() {
                return firstName;
            }
        
            public void setFirstName(String firstName) {
                this.firstName = firstName;
            }
        
            public String getMiddleName() {
                return middleName;
            }
        
            public void setMiddleName(String middleName) {
                this.middleName = middleName;
            }
        
            public String getLastName() {
                return lastName;
            }
        
            public void setLastName(String lastName) {
                this.lastName = lastName;
            }
        
            @Override
            public String toString() {
                return "User [id=" + id + ", email=" + email + ", password=" + password + ", firstName=" + firstName
                        + ", middleName=" + middleName + ", lastName=" + lastName + "]";
            }
        }


My xml form Mapping with User class... by form:form我的 xml 表格与用户 class 的映射...按表格:表格

* *

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib prefix= "form" uri ="http://www.springframework.org/tags/form" %>

<body bgcolor = "black">
    <h1 style="color: white">ADD USER INFORMATION</h1>
    
    <hr>
    
    <div style="color: white">
    
        <form:form  action ="${pageContext.request.contextPath}/user/conformation" 
                    modelAttribute="user" 
                    method="post">
                    
                    First Name : <form:input path="firstName"/>
                    <form:errors path ="firstName" cssClass="error"/>
                    <br><br>
                    
                    Middle Name: <form:input path="middleName"/>
                    <form:errors path ="middleName" cssClass="error"/>
                    <br><br>
                    
                    Last Name: <form:input path="lastName"/>
                    <form:errors path ="lastName" cssClass="error"/>
                    <br><br>
                    
                    Email : <form:input path="email"/>
                    <form:errors path ="email" cssClass="error"/>
                    <br><br>
                    
                    password : <form:input type="password" path="password"/>
                    <form:errors path ="password" cssClass="error"/>
                    <br><br>                    
                    
                    <input type = "Submit" value="next"/>
                    
        </form:form>
        
    </div>
    
    <hr>
    
    <a href="${pageContext.request.contextPath}/" style="color: white"> cancle </a>
    
</body>
</html>

*

ERROR I GOT when I submit My jsp page提交 jsp 页面时出现错误


    Aug 11, 2020 12:29:33 PM org.hibernate.hql.internal.QueryTranslatorFactoryInitiator initiateService
        INFO: HHH000397: Using ASTQueryTranslatorFactory
        Hibernate: select user0_.id as id1_0_, user0_.email as email2_0_, user0_.firstName as firstNam3_0_, user0_.lastName as lastName4_0_, user0_.middleName as middleNa5_0_, user0_.password as password6_0_ from customers user0_ where user0_.email='sdghag@jsjdhak.zdhzg'
        Aug 11, 2020 12:29:40 PM org.apache.catalina.core.StandardWrapperValve invoke
        SEVERE: Servlet.service() for servlet [dispatcher] in context with path [/finalYearProject2] threw exception [Request processing failed; nested exception is javax.validation.ValidationException: HV000028: Unexpected exception during isValid call.] with root cause
        java.lang.NullPointerException
            at com.vicky.finalYearProject.customValidations.UserAvailabilityValidator.isValid(UserAvailabilityValidator.java:26)
            at com.vicky.finalYearProject.customValidations.UserAvailabilityValidator.isValid(UserAvailabilityValidator.java:1)
            at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateSingleConstraint(ConstraintTree.java:180)
            at org.hibernate.validator.internal.engine.constraintvalidation.SimpleConstraintTree.validateConstraints(SimpleConstraintTree.java:62)
            at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:75)
            at org.hibernate.validator.internal.metadata.core.MetaConstraint.doValidateConstraint(MetaConstraint.java:130)
            at org.hibernate.validator.internal.metadata.core.MetaConstraint.validateConstraint(MetaConstraint.java:123)
            at org.hibernate.validator.internal.engine.ValidatorImpl.validateMetaConstraint(ValidatorImpl.java:555)
            at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForSingleDefaultGroupElement(ValidatorImpl.java:518)
            at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForDefaultGroup(ValidatorImpl.java:488)
            at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForCurrentGroup(ValidatorImpl.java:450)
            at org.hibernate.validator.internal.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:400)
            at org.hibernate.validator.internal.engine.ValidatorImpl.validate(ValidatorImpl.java:172)
            at org.hibernate.cfg.beanvalidation.BeanValidationEventListener.validate(BeanValidationEventListener.java:116)
            at org.hibernate.cfg.beanvalidation.BeanValidationEventListener.onPreInsert(BeanValidationEventListener.java:80)
            at org.hibernate.action.internal.EntityIdentityInsertAction.preInsert(EntityIdentityInsertAction.java:197)
            at org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:75)
            at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:645)
            at org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:282)
            at org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:263)
            at org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:317)
            at org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:332)
            at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:289)
            at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:196)
            at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:127)
            at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:192)
            at org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:38)
            at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:177)
            at org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:32)
            at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:73)
            at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:713)
            at org.hibernate.internal.SessionImpl.save(SessionImpl.java:705)
            at org.hibernate.internal.SessionImpl.save(SessionImpl.java:700)
            at com.vicky.finalYearProject.DAO.UserDaoImplimantation.addUser(UserDaoImplimantation.java:16)
            at com.vicky.finalYearProject.Service.PurchaseService.purchase(PurchaseService.java:46)
            at com.vicky.finalYearProject.Controller.UserController.purchaseconformed(UserController.java:74)
            at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
            at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.base/java.lang.reflect.Method.invoke(Method.java:567)
            at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
            at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
            at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)
            at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:888)
            at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793)
            at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
            at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
            at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
            at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
            at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
            at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
            at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
            at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320)
            at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:126)
            at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:90)
            at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
            at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:118)
            at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
            at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)
            at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
            at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)
            at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
            at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:158)
            at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
            at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
            at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
            at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)
            at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
            at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)
            at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
            at org.springframework.security.web.csrf.CsrfFilter.doFilterInternal(CsrfFilter.java:117)
            at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
            at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
            at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:92)
            at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:77)
            at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
            at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
            at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)
            at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
            at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)
            at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
            at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
            at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215)
            at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178)
            at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)
            at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
            at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
            at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
            at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
            at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
            at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
            at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
            at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
            at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
            at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
            at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
            at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
            at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
            at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
            at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
            at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
            at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
            at java.base/java.lang.Thread.run(Thread.java:835)

Hibernaete.cfg.xml休眠.cfg.xml


    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-configuration PUBLIC
            "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
        <session-factory>
              <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
              <property name="hibernate.connection.password">120699@mysqL</property>
              <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/final_year_project</property>
              <property name="hibernate.connection.username">root</property>
              <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
              <property name="hbm2ddl.auto">update</property>
              <property name="show_sql">true</property>
        </session-factory>
    </hibernate-configuration>

Spring Configuration Spring 配置

1.ViewResolverConfigrationClass.java 1.查看解析器配置类.java


    package com.vicky.finalYearProject.Configuration;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.ViewResolver;
    import org.springframework.web.servlet.config.annotation.EnableWebMvc;
    import org.springframework.web.servlet.view.InternalResourceViewResolver;
    
    @Configuration
    @EnableWebMvc
    @ComponentScan(basePackages = "com.vicky.finalYearProject")
    public class ViewResolverConfigrationClass {
    
        @Bean
        public ViewResolver viewResolver() {
            
            InternalResourceViewResolver viewresolver = new InternalResourceViewResolver();
            
            viewresolver.setPrefix("/WEB-INF/view/");
            
            viewresolver.setSuffix(".jsp");
            
            return viewresolver;
        }
    }


2.DispecherServletConfigClass.java 2.DispecherServletConfigClass.java


    package com.vicky.finalYearProject.Configuration;
    
    import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
    
    public class DispecherServletConfigClass extends AbstractAnnotationConfigDispatcherServletInitializer {
    
        @Override
        protected Class<?>[] getRootConfigClasses() {
            return null;
        }
    
        @Override
        protected Class<?>[] getServletConfigClasses() {
            return new Class[] {ViewResolverConfigrationClass.class};
        }
    
        @Override
        protected String[] getServletMappings() {
            return new String[] {"/"};
        }
    }

I tried alot to figure out Even it works well without @UserAvailability in User.java Class我尝试了很多来弄清楚即使没有@UserAvailability在 User.java Class 中它也能正常工作
EVEN it works well with @UserAvailability when UserAvailabilityValidator.IsValid() returns false即使当 UserAvailabilityValidator.IsValid() 返回 false 时,它也可以很好地与 @UserAvailability 配合使用
Can Anyone please solve this issue For me...Thank you`enter code here谁能帮我解决这个问题...谢谢`在此处输入代码

I THINK HIBERNATE IS AGAIN VALIDATING ALL CONSTRAINT AFTER SPRING THIS ERROR ERROR IS COME WHEN I TRY TO USE SAVE METHOD IN HIBERNATE我认为 HIBERNATE 再次验证 SPRING 之后的所有约束当我尝试在 HIBERNATE 中使用保存方法时出现此错误

UserController.java用户控制器.java


    package com.vicky.finalYearProject.Controller;
    
    import java.util.List;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.validation.Valid;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.validation.BindingResult;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.ModelAttribute;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    import com.vicky.finalYearProject.Entity.Department;
    import com.vicky.finalYearProject.Entity.Student;
    import com.vicky.finalYearProject.Entity.University;
    import com.vicky.finalYearProject.Service.StudentSignupService;
    
    @Controller
    @RequestMapping("/student")
    public class StudentController {
    
        @Autowired
        Student student;
        
        @Autowired
        StudentSignupService studentSignupSvc;
        
        List<String> universities;
        List<String> departments;
        
        @GetMapping("/signup")
        public String studentLogin(Model model) {
            
            universities = studentSignupSvc.getAllUniversity();
            departments = studentSignupSvc.getAllDepartment();
            
            model.addAttribute("student", student);
            model.addAttribute("universityOptions", universities);
            model.addAttribute("departmentOptions", departments);
            
            return "student/signup";
        }
        
        @PostMapping("/conformation") 
        public String studentConformation(
                            @Valid @ModelAttribute("student") Student student,
                            BindingResult result,
                            Model model,
                            HttpServletRequest request) {
            
            if(result.hasErrors()) {
                model.addAttribute("universityOptions", universities);
                model.addAttribute("departmentOptions", departments);
                return "student/signup";
            }
            else {
                
                String universityName = (String)request.getParameter("theUniversity");
                String departmentName = (String)request.getParameter("theDepartment");
                
                
                University university = studentSignupSvc.getUniversity(universityName);
                Department department = studentSignupSvc.getDepartment(departmentName);
                
                
                student.setUniversity(university);
                student.setDepartment(department);
    
                studentSignupSvc.signup(student);  //CAUSE OF ERROR If I comment this line everything work fine
//and sigup service is perfactly auto wired i checked it.
                
                return "student/studentConformation";
            }       
        }
    }

In the UserAvailabilityValidator class, is the availabilityService well autowired?在 UserAvailabilityValidator class 中,availabilityService 是否自动装配好? If the service is null, you will have this error.如果服务是null,就会出现这个错误。

Spring ought to inject dependencies into any ConstraintValidator-implementing class, even without marking them as @Bean or @Component, so I'm guessing you are missing the spring wiring. Spring 应该将依赖项注入任何实现 ConstraintValidator 的 class,即使没有将它们标记为 @Bean 或 @Component,所以我猜你错过了 Z2A2D595E6ED9A0B24F0267F2B63B134 接线。

Do you have a LocalValidatorFactoryBean in your spring configuration?您的 spring 配置中有 LocalValidatorFactoryBean 吗? From the documentation:从文档中:

import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;

@Configuration
public class AppConfig {

    @Bean
    public LocalValidatorFactoryBean validator() {
        return new LocalValidatorFactoryBean();
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM