Как импортировать javax.validation (для использования @Valid) в проект gradle

#java #spring #spring-boot #gradle #spring-security

#java #весна #весенняя загрузка #gradle #spring-безопасность

Вопрос:

Я создаю простую страницу входа и регистрации с помощью web security. Это AuthController.java выдает ошибку при импорте javax.validation.Не удается разрешить Valid. Я добавил зависимость в build.graddle и построил проект, а затем также выдал ту же ошибку.

     package com.djamware.springsecuritymongodb.controllers;

    import com.djamware.springsecuritymongodb.domain.User;

    import com.djamware.springsecuritymongodb.services.CustomUserDetailsService;
    import javax.validation.Valid;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.security.core.Authentication;
    import org.springframework.security.core.context.SecurityContextHolder;
    import org.springframework.stereotype.Controller;
    import org.springframework.validation.BindingResu<
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.servlet.ModelAndView;

    @Controller
    public class AuthController {
    @Autowired
    private CustomUserDetailsService userService;
    @RequestMapping(value = "/login", method = RequestMethod.GET)
    public ModelAndView login() {
     ModelAndView modelAndView = new ModelAndView();
    modelAndView.setViewName("login");
    return modelAndView;
}
@RequestMapping(value = "/signup", method = RequestMethod.GET)
public ModelAndView signup() {
    ModelAndView modelAndView = new ModelAndView();
    User user = new User();
    modelAndView.addObject("user", user);
    modelAndView.setViewName("signup");
    return modelAndView;
}
@RequestMapping(value = "/signup", method = RequestMethod.POST)
public ModelAndView createNewUser(@Valid User user, BindingResult bindingResult) {
    ModelAndView modelAndView = new ModelAndView();
    User userExists = userService.findUserByEmail(user.getEmail());
    if (userExists != null) {
        bindingResult
                .rejectValue("email", "error.user",
                        "There is already a user registered with the username provided");
    }
    if (bindingResult.hasErrors()) {
        modelAndView.setViewName("signup");
    } else {
        userService.saveUser(user);
        modelAndView.addObject("successMessage", "User has been registered successfully");
        modelAndView.addObject("user", new User());
        modelAndView.setViewName("login");

    }
    return modelAndView;
}
@RequestMapping(value = "/dashboard", method = RequestMethod.GET)
public ModelAndView dashboard() {
    ModelAndView modelAndView = new ModelAndView();
    Authentication auth = SecurityContextHolder.getContext().getAuthentication();
    User user = userService.findUserByEmail(auth.getName());
    modelAndView.addObject("currentUser", user);
    modelAndView.addObject("fullName", "Welcome "   user.getFullname());
    modelAndView.addObject("adminMessage", "Content Available Only for Users with Admin Role");
    modelAndView.setViewName("dashboard");
    return modelAndView;
}
@RequestMapping(value = {"/","/home"}, method = RequestMethod.GET)
public ModelAndView home() {
    ModelAndView modelAndView = new ModelAndView();
    modelAndView.setViewName("home");
    return modelAndView;
 }

}
 

Код Build.gradle прилагается ниже. Здесь мне нужно добавить что-нибудь еще для импорта javax.validation?

     plugins {
id 'org.springframework.boot' version '2.4.0'
id 'io.spring.dependency-management' version '1.0.10.RELEASE'
id 'java'
id 'war'
    }

    group = 'com.djamware'
    version = '0.0.1-SNAPSHOT'
    sourceCompatibility = '8'

    repositories {
    mavenCentral()
    }

   dependencies {
   implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'
   implementation 'org.springframework.boot:spring-boot-starter-security'
   implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
   implementation 'org.springframework.boot:spring-boot-starter-web'
   compile 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect:2.4.1'
   // https://mvnrepository.com/artifact/javax.validation/validation-api
   compile group: 'javax.validation', name: 'validation-api', version: '2.0.1.Final'

   // https://mvnrepository.com/artifact/javax.transaction/javax.transaction-api
  compile group: 'javax.transaction', name: 'javax.transaction-api', version: '1.3'
  compile group: 'javax.persistence', name: 'persistence-api', version: '1.0'

   implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5'
   providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
   testImplementation 'org.springframework.boot:spring-boot-starter-test'
   testImplementation 'org.springframework.security:spring-security-test'
   }

  test {
  useJUnitPlatform()
  }
 

Комментарии:

1. Это для экспериментов или для реального использования? Обратите внимание, что вы можете просто добавить Authentication auth в качестве параметра метода, и Spring предоставит его вам.

Ответ №1:

 implementation 'org.springframework.boot:spring-boot-starter-validation:2.4.0'
 

Ссылка

Ответ №2:

Просто используйте :

 compile 'org.springframework.boot:spring-boot-starter-validation:2.3.0.RELEASE'
 

Комментарии:

1. javax.валидация. Valid недоступен, за исключением того, что все они доступны, как javax.validation. bootstrap, ограничения, группы, spi.