2 votes

Comment définir l'unité B2B en session (Hybris) ?

Comment puis-je définir l'unité B2B dans la session. J'ai une classe de façade qui implémente la logique pour définir les unités dans la session (ex. Quand un utilisateur se connecte à la vitrine, il me donne ses unités et définit ces unités dans la session). Voici la méthode que j'utilise dans la classe personnalisée qui s'étend à 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();
    }

Ensuite, dans le storefront, j'ai montré dans la balise select en jsp, une liste déroulante avec ces unités. Ok, donc j'ai maintenant un attribut avec ces unités qui est dans la session et je veux que lorsque je clique pour une certaine unité B2B, cette unité soit définie dans la session. Je pense que je devrais faire un contrôleur pour implémenter la logique (définir l'unité actuelle dans la session) et dans un fichier js pour faire un appel ajax avec une méthode onChange, ou une api ajax, mais je ne sais pas comment faire cela. Quelqu'un peut-il m'aider, je suis nouveau dans hybris et je serai heureux si quelqu'un m'aide.

2voto

Aps Points 21

Vous avez déjà fait la moitié du chemin car vous avez déjà peuplé UnitésB2BU disponibles du backend (Façade) au frontend (JSP). De même, vous devez renvoyer les "b2bunitIds" au backend.

Mettez en œuvre les étapes suivantes :

  1. Trouvez/créez le fichier javascript à partir duquel vous pouvez faire un appel ajax (ou post normal). Assurez-vous que le fichier js est chargé pour la page actuelle sur laquelle vous avez besoin que toutes ces actions soient effectuées, sinon votre méthode javascript ne sera pas exécutée.

  2. Ecrivez la logique requise dans le fichier js ci-dessus pour obtenir b2bunitId de la sélection effectuée. Utilisez b2bunitId pour invoquer la méthode du contrôleur ( RequestMapping ).

  3. À partir de la méthode invoquée du contrôleur, définissez l'élément sélectionné. b2bunitId en session comme vous l'avez fait dans la méthode ci-dessus ( getSessionService().setAttribute("availableB2BUnits", b2bunitIds); ).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X