java - 如何在 session (Hybris)中设置B2B单位?

标签 java sap-commerce-cloud

如何在 session 中设置 B2B 单位。我有门面类,它实现了在 session 中设置单位的逻辑(例如,当一个用户登录店面时,给我他的单位并在 session 中设置这些单位)。这是我在自定义类中的方法,它扩展了 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();
    }

然后在店面中,我在jsp中的选择标签中显示了这些单位的下拉列表。好的,所以我现在拥有这些处于 session 中的单位的属性,并且我希望当我单击某些 B2B 单位时,该单位会在 session 中设置。我认为,我应该做一些 Controller 来实现逻辑(在 session 中设置 currentUnit )并在一个 js 文件中使用某种方法 onChange 或一些 ajax api 进行一些 ajax 调用,但我不知道如何做到这一点。有人可以帮助我吗,我是 hybris 的新手,如果有人帮助我,我会很高兴

最佳答案

您已经完成了一半,因为您已经从后端 (Façade) 向前端 (JSP) 填充了 availableB2BUnits。同样,您必须将“b2bunitIds”发送回后端。

执行以下步骤:

  1. 查找/创建 javascript 文件,您可以从中进行 ajax(或正常的 post)调用。确保为您需要执行所有这些操作的当前页面加载了 js 文件,否则您的 javascript 方法将不会被执行。

  2. 在上面的js文件中编写所需的逻辑,以从所做的选择中获取b2bunitId。使用 b2bunitId 调用 Controller 的方法 ( RequestMapping )。

  3. 从 Controller 的调用方法中,在 session 中设置选定的 b2bunitId,就像您在上述方法中所做的那样 (getSessionService().setAttribute("availableB2BUnits", b2bunitIds) ;)。

关于java - 如何在 session (Hybris)中设置B2B单位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53320155/

相关文章:

java - 哪些最重要的功能我会错过针对 Android API 3 (OS 1.5) 而不是最新的 API?

java - 如何在Java中动态地将信息存储到包含字符串和整数的数据结构中

java - Android java 屏幕作为按钮

java - 收款中断

java - 将每个本地化的 boolean 属性值更新为 TRUE

sap-commerce-cloud - Hybris - 在 cscockpit 搜索结果中添加新列

javascript - Webview Javascript 在 Android 7.0 及更高版本中不起作用

sap-commerce-cloud - 如何在生产环境上锁定 Hybris 来初始化系统

groovy - Hybris -> 如何使用执行 beanshell 脚本创建 cronjob?

java - 当我启动 ant 构建并继续编码时会发生什么,我的更改(运行 ant 构建后)是否被忽略?