Personalizando Hybris controladores de acelerador montra em um addon

votos
0

Estou usando Hybris 6.3 e gostaria de seguir a melhor prática de personalizar os controladores de acelerador montra usando um addon. Isto é feito para fazer a atualização para uma loja mais recente muito mais fácil.

Por exemplo, o acelerador define um controlador semelhante ao 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
    }
}

Na minha addon, gostaria de mapear esse mesmo padrão de URL para um novo controlador que irá substituir a funcionalidade.

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
    }
}

Esta pergunta foi feita aqui , e o conselho aceitou era fazer da seguinte forma:

  • Em addon-web-spring.xml , substituir o feijão controlador como
    <bean name=miniCartController class=com.custom.storefrontaddon.controllers.misc.MyCustomMiniCartController/>
  • Em addon-web-spring.xml , adicionar um SimpleUrlHandlerMappingcomo
    <bean class=org.springframework.web.servlet.handler.SimpleUrlHandlerMapping>
        <property name=mappings>
            <props>
                <prop key=/cart/miniCart/**>miniCartController</prop>
            </props>
        </property>
    </bean>
  • O controlador addon agora será chamado em vez do controlador de acelerador padrão para o URL de destino.

Minha pergunta

Como isso funciona mecanismo quando a documentação da Primavera diz explicitamente que

Há também várias coisas já não é possível:
- Escolha um controlador de primeira com um SimpleUrlHandlerMappingou BeanNameUrlHandlerMappinge, em seguida, estreitar o método baseado em @RequestMappinganotações.

Primavera está usando RequestMappingHandlerMappingpor padrão na vitrine acelerador, e no complemento estamos introduzindo SimpleUrlHandlerMapping. Eu quero entender por que isso funciona, quando todos os outros post no fórum que eu li diz que você não pode substituir @RequestMappingURLs em um controlador diferente, ou você receberá uma exceção lançada para o URL duplicado.

Publicado 27/11/2018 em 18:01
fonte usuário
Em outras línguas...                            


1 respostas

votos
0

Na minha resposta, vou suppopse que você cometeu um erro de digitação, e você quis dizer MyCustomMiniCartController vez de MiniCartController em:

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

A coisa aqui é que SimpleUrlHandlerMappingnão tem nada para fazer e sua declaração no addon-web-spring.xmlé completamente inútil.

Redefinindo o miniCartControllerfeijão no addon faz com que a definição do bean substituído pela classe addon, e assim o mapeamento solicitação que é declarado na classe addon é o "usado" pelo RequestMappingHandlerMapping.

Respondeu 02/12/2018 em 11:25
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more