Как установить единицу B2B в сеансе (Hybris)? - PullRequest
0 голосов
/ 15 ноября 2018

Как установить единицу B2B в сеансе. У меня есть класс фасадов, который реализует логику для установки модулей в сеансе (например, когда один пользователь входит в систему в витрине магазина, дайте мне свои модули и установите эти модули в сеансе). Это мой метод в пользовательском классе, который exsetns DefaultCustomerFacade.class

 @Override
    public void loginSuccess(){
        Set<B2BUnitModel> allUserGroupsForUser = getUserService().getAllUserGroupsForUser(getCurrentUser(), B2BUnitModel.class);
        List<String> b2bunitIds = allUserGroupsForUser.stream()
                .map(B2BUnitModel::getName)
                .collect(Collectors.toList());
        if(!allUserGroupsForUser.isEmpty()) {
            getSessionService().setAttribute("availableB2BUnits", b2bunitIds);
        }
        super.loginSuccess();
    }

Затем в витрине я показал в теге select в jsp выпадающий список с этими единицами. Хорошо, теперь у меня есть атрибут с этими единицами, которые находятся в сеансе, и я хочу, когда я нажимаю на какую-то единицу B2B, эту единицу, чтобы установить в сессии. Я думаю, я должен сделать какой-нибудь контроллер для реализации логики (установить currentUnit в сеансе) и в одном js-файле сделать вызов ajax с некоторым методом onChange или каким-то ajax api, но я не знаю, как это сделать. Может ли кто-нибудь помочь мне, я новичок в hybris, и я буду рад, если кто-то поможет мне

1 Ответ

0 голосов
/ 16 ноября 2018

Вы уже прошли половину, поскольку вы уже заполнили availableB2BUnits от бэкэнда (фасад) до внешнего интерфейса (JSP). Точно так же вы должны отправить обратно «b2bunitIds» на сервер.

Выполните следующие шаги:

  1. Найти / создать файл javascript, из которого вы можете сделать вызов ajax (или обычный пост). Убедитесь, что файл js загружен для текущей страницы, на которой вам нужно выполнить все эти действия, иначе ваш метод javascript не будет выполнен.

  2. Запишите необходимую логику в файл js выше, чтобы получить b2bunitId из сделанного выбора. Используйте b2bunitId для вызова метода контроллера ( RequestMapping ).

  3. Из вызванного метода Контроллера установите выбранный b2bunitId в сеансе, как вы делали это в вышеуказанном методе (getSessionService().setAttribute("availableB2BUnits", b2bunitIds);).

...