当前位置: 首页 > 知识库问答 >
问题:

在插件中自定义Hybris accelerator店面控制器

包和泰
2023-03-14

例如,加速器定义了一个Minicart控制器,类似于

package com.custom.storefront.controllers.misc;

@Controller
public class MiniCartController extends AbstractController
{
    @RequestMapping(value = "/cart/miniCart/{totalDisplay:.*}", method = RequestMethod.GET)
    public String getMiniCart(@PathVariable final String totalDisplay, final Model model)
    {
        //default functionality
    }
}

在我的addon中,我希望将相同的URL模式映射到一个新的控制器,该控制器将覆盖该功能。

package com.custom.storefrontaddon.controllers.misc;

@Controller
public class MyCustomMiniCartController extends AbstractController
{
    @RequestMapping(value = "/cart/miniCart/{totalDisplay:.*}", method = RequestMethod.GET)
    public String getMiniCart(@PathVariable final String totalDisplay, final Model model)
    {
        //overriding functionality, different from the default accelerator storefront
    }
}

这里提出了这一问题,得到接受的建议是这样做:

    null
    <bean name="miniCartController" class="com.custom.storefrontaddon.controllers.misc.MyCustomMiniCartController"/>
    null
    <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="/cart/miniCart/**">miniCartController</prop>
            </props>
        </property>
    </bean>
    null

Spring在accelerator storefront中默认使用RequestMappingHandlerMapping,在插件中我们将引入SimpleURLHandlerMapping。我想明白为什么这样做,因为我读过的所有其他论坛帖子都说,您不能在不同的控制器中覆盖@requestmappingURL,否则将为重复的URL引发异常。

共有1个答案

殷永嘉
2023-03-14

在我的回答中,我会支持您打错了字,您的意思是MyCustomMiniCartController而不是MiniCartController:

<bean name="miniCartController" class="com.custom.storefrontaddon.controllers.misc.MyCustomMiniCartController"/>

这里的问题是,SimpleURLHandlerMapping没有什么可做的,它在addon-web-spring.xml中的声明完全没有用。

在addon中重新定义minicartControllerbean会使bean定义被addon类覆盖,因此在addon类中声明的请求映射是RequestMappingHandlerMapping“使用”的。

 类似资料:
  • 在另一个线程中,我正在从GoogleDeveloper的StoreLocator插件中寻找面板的一些定制帮助 如何从谷歌开发者定制商店定位器插件的侧边框 我需要进一步的定制,如:1.我想为要订购的商店列表制作无序列表。2.想把更多的信息和细节的列表。3.想要获得距离每个商店从搜索位置。 你能建议我如何前进吗?

  • 我目前正在为我的服务器网络编写自己的GUI商店,我面临着两个奇怪的问题。 第一个问题是,每当我想获得两个带有项目ID 161和两个不同元ID(0和1)的树叶时,我只得到一个元ID 2。 这是我在调试中尝试获取项目数据时得到的内容:问题 1 这就是我在库存中得到的:问题 1 但它应该是这个(例如):161/0 或 161/1 我从Spigot/Bukkit自己那里得到了这个物品Meta,所以我无论如

  • 我尝试用自定义控制器制作一个自定义组件。自定义组件已经显示在应用程序上,但我未能向其添加属性。 项目结构: null 布尔马尔科 完全错误: 原因:java.lang.nullPointerException:无法调用“javafx.scene.image.imageeview.setimage(javafx.scene.image.image)”,因为“controller.topbarbtn.

  • 自定义控件用JavaScript和原生平台支持的语言编写。它们使用原生Tabris.js客户端的接口,并被封装在Cordova插件中。本文将介绍JavaScript的实现部分。 用JavaScript定义自定义控件 自定义控件必须继承自Widget。它能够与自定义控件的原生部分进行通信。 自定义控件类必须覆写_nativeType属性的getter以返回与原生实现匹配的类型: class MyCu

  • PyQt5 有丰富的组件,但是肯定满足不了所有开发者的所有需求,PyQt5 只提供了基本的组件,像按钮,文本,滑块等。如果你还需要其他的模块,应该尝试自己去自定义一些。 自定义组件使用绘画工具创建,有两个基本方式:根据已有的创建或改进;通过自己绘图创建。 Burning widget 这个组件我们会在 Nero,K3B,或者其他 CD/DVD 烧录软件中见到。 #!/usr/bin/python3

  • 问题: NSIS 中,自定义页面中,有一个 勾选框 和 一个 目录选择编辑框,能否实现勾选 CheckBox 后,目录选择编辑框 可用,如果不勾选,目录选择编辑框 变为不可用。 回答: 问题涉及到 NSIS 中自定义页面中的关于控件的消息传递问题,还有怎样进入回调函数处理的问题。 关于自定义页面的预先声明格式: Page custom [创建函数] [离开函数] [标题] 这里解释一下,关于自定义