Ответы пользователя по тегу Spring
  • Как итерировать в операторе WHERE используя данные из второй таблицы?

    azerphoenix
    @azerphoenix Автор вопроса, куратор тега Spring
    Java Software Engineer
    Вроде бы и этот вариант рабочий:
    SELECT * FROM `USER_META` t1
    INNER JOIN `PAYMENT_METHODS` t2 ON t1.META_KEY = t2.PAYMENT_SYSTEM
    WHERE USER_ID = 736;

    Результат:
    5c7e73dbe95d0970971186.png
    Ответ написан
  • Почему Spring Boot не загружает application.yml?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Если вы работаете в Intellij IDEA, то проверьте в настройках проекта правильно ли добавлен этот файл.
    5c713a0cb8798831136890.png

    У меня совсем другая, но похожая ситуация была. Когда я создавал файл в intellij IDEA и выбирал yml || properties, оказывается он автоматически не добавлял нужный формат к названию файла. Так у меня получались файлы с названием application-dev вместо application-dev.properties
    Ответ написан
    Комментировать
  • Как разграничить функционал страницы сайта в зависимости от роли пользователя?

    azerphoenix
    @azerphoenix Куратор тега Spring
    Java Software Engineer
    Вы можете ограничить функционал на разных уровнях.
    Например, можно ограничить функционал на уровне шаблона. Если вы используете шаблонизатор thymeleaf, то скорее вам понадобится добавить в Gradle || Maven -
    implementation group: 'org.thymeleaf.extras', name: 'thymeleaf-extras-springsecurity5', version: '3.0.4.RELEASE'

    А дальше уже в шаблон вставить - sec:authorize="hasAuthority('ADMIN')"
    Например,
    <div class="dashboard_rules" sec:authorize="hasAuthority('ADMIN')">
    <!-- Увидит только админ-->
    </div>


    Также можно на уровне контроллера ограничить доступ:
    @PreAuthorize("hasAuthority('ADMIN')")

    Как в зависимости от роли пользователя, после удачного входа подгружать index.html с разным наполнением?

    Я обычно, делаю следующим образом:
    После авторизации получаю текущего авторизованного юзера
    @AuthenticationPrincipal UserDetails currentUser
    Нахожу юзера и проверяю его права:
    User user = (User) userService.findUserByEmail(currentUser.getUsername());

    Через if() {} else {} отдаю тот или иной контент.
    Например,
    @GetMapping("/dashboard")
    public String dashboard(
            @AuthenticationPrincipal UserDetails currentUser,
            Model model
    ) {
        model.addAttribute("pageTitle","Панель управления");
        User user = (User) userService.findUserByEmail(currentUser.getUsername());
        if(user.isAdmin()) {
            model.addAttribute("posts", posts.getAdminPosts());
        }  else {
            model.addAttribute("posts", posts.getUserPosts());
        }
    
        return "backend/dashboard";
    }
    Ответ написан
    Комментировать
  • Spring. Как автоматически заполнить форму после заполнения одного из полей?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    У вас же форма будет на клиенте, а соответствено, java там не поможет. Вам нужно при помощи javascript (при потере фокуса поля) аяксом отправить запрос на сервер и если есть запись с нужным вам ID заполнять нужные поля при помощи JS. А данные для вставки будут в полученном ответе от сервера в JSON или XML Соответственно, это POST ajax запрос и скорее @RestController, который вернет ответ.
    Ответ написан
    Комментировать
  • Как разобраться в профилях Spring?

    azerphoenix
    @azerphoenix Автор вопроса, куратор тега Java
    Java Software Engineer
    Благодаря помощи все-таки разобрался с проблемой и она была до ужаса банальной)))
    В общем, при создании properties файла надо вручную дописывать .properties, если в IDE выбрать тип файла properties, то он просто создаст файл (не в формате properties.)
    Ссылка на решение:
    Почему Spring игнорирует кофигурации properties файлов профилей?
    Скрин:
    5c267edd6fce3692227363.png
    Ответ написан
    Комментировать
  • Spring - почему возникает исключение ConversionFailedException?

    azerphoenix
    @azerphoenix Автор вопроса, куратор тега Java
    Java Software Engineer
    Решение оказалось довольно простым:
    - Нужно было убрать Revision revisionNew
    - в теле метода создать новую ревизию и сохранить

    Revision revisionNew = new Revision(revision);
    revisionService.addRevision(revisionNew);
    Ответ написан
    Комментировать
  • Почему не работает клиент для WordPress Rest API?

    azerphoenix
    @azerphoenix Автор вопроса, куратор тега Java
    Java Software Engineer
    Итак, разобрался я с проблемой.
    Проблема заключается в том, что некоторые shared хостинги отключают по дефолту http авторизацию.

    Ниже прикрепляю ссылки на полезные ресурсы, которые помогли мне в разрешении проблемы:
    1) тут описаны возможные правки в htaccess
    https://github.com/WP-API/Basic-Auth/issues/35
    2) тут ответ самого разработчика
    https://github.com/Afrozaar/wp-api-v2-client-java/...

    Для решения проблемы в моем случае, достаточно установить этот плагин и активировать -
    https://github.com/WP-API/Basic-Auth
    Ответ написан
    Комментировать
  • Spring MVC, как необходимо обрабатывать формы с датой?

    azerphoenix
    @azerphoenix Куратор тега Spring
    Java Software Engineer
    https://gerrytan.wordpress.com/2013/05/21/binding-...
    Я и сам изучаю Spring MVC и пока не сталкивался с отправкой Date из формы, но посмотрите ссылку выше.
    Как я понял у вас есть @Entity и необходимо указать аннотацию- @DateTimeFormat

    Пример кода:
    @DateTimeFormat(pattern = "dd/MM/yyyy")
    private Date dob;


    public String addCustomer(@ModelAttribute("addCustomerForm") AddCustomerForm form) {
      // do something with form input ..
    }


    Или вот, еще один пример - https://stackoverflow.com/questions/43786382/submi...
    для получения данных из формы с input{type="date"}
    Ответ написан
    Комментировать
  • Откуда взялся редирект на статичный файл?

    azerphoenix
    @azerphoenix Автор вопроса, куратор тега Spring
    Java Software Engineer
    В общем решил проблему.
    На всякий случай, напишу решение сюда, чтобы другим помочь.
    Если вы столкнулись с этой проблемой, то наверняка вы подключили Spring Security и не указали директории css js fonts и др. статичный контент для игнорирования.
    Проблема наблюдалась после входа на сайт и после авторизации открывался первый статичный файл из шапки. В моем случае style.css

    РЕШЕНИЕ:
    В файл WebSecurityConfig
    добавьте
    следующий код:
    @Override
        public void configure(WebSecurity web) throws Exception {
            web.ignoring().antMatchers("/css/**","/js/**","/fonts/**","/images/**");
        }


    Ссылка на источник: StackOverflow
    Ответ написан
    Комментировать
  • Какая по умолчанию инициализация бинов в спринг 5? Ленивая или нет?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Здравствуйте!

    Судя по данному ответу на вопрос -
    https://stackoverflow.com/questions/15092898/sprin...

    По умолчанию - нет.
    The default behaviour is false:

    By default, ApplicationContext implementations eagerly create and configure all singleton beans as part of the initialization process. Generally, this pre-instantiation is desirable, because errors in the configuration or surrounding environment are discovered immediately, as opposed to hours or even days later. When this behavior is not desirable, you can prevent pre-instantiation of a singleton bean by marking the bean definition as lazy-initialized. A lazy-initialized bean tells the IoC container to create a bean instance when it is first requested, rather than at startup.
    Ответ написан
    Комментировать