Création d’un composant pour la suite Hybris

Logo Hybris

La suite Hybris est une plateforme pour la création et la gestion de sites e-commerce. Cette suite dispose d'une partie CMS qui permet de gérer le contenu de son site internet. Comme tout bon CMS, une page est composée de blocs qui ont chacun leur rôle, comme par exemple, le bloc panier qui liste des produits ou encore détaille un produit.

Mais il faut aussi pouvoir créer des blocs avec un comportement particulier pour répondre à des besoins spécifiques. Vous découvrirez dans cet article comment faire.

Déclarer un nouveau type de composant

Ici je déclare un nouveau composant qui aura un seul attribut text et qui prend une JSP pour rendre la vue. La déclaration se fait dans un fichier *-items.xml.

 

<itemtype code="MyNewComponent" autocreate="true" generate="true" extends="JspIncludeComponent">
    <attribute type="localized:java.lang.String" qualifier="text">
        <modifiers read="true" write="true" search="true" optional="true"/>
            <persistence type="property" >
                <columntype>
                    <value>text</value>
                </columntype>
             </persistence>
    </attribute>
</itemtype>
core-items.xml

 

 

La compilation va générer le composant ainsi que les classes liées qui seront associées. Mais pour agir sur ce composant, il faut créer le contrôleur associé. Par convention, il se nomme avec le nom du composant suffixé par Controller

Le contrôleur

Pour la définition des contrôleurs, Hybris utilise les annotations. Le contrôleur créé va surcharger la méthode fillModel, dans laquelle nous aurons implémenté la logique métier qui convient.

Ci-dessous un exemple de controller, avec l'inclusion d'un service par annotation, ici le CategoryService.

 

@Controller("MyNewComponentController")
@Scope("tenant")
@RequestMapping(value = ControllerConstants.Actions.Cms.MyNewComponent)
public class MyNewComponentController extends AbstractCMSComponentController<MyNewComponentController> {

    @Resource(name = "CategoryService")
    private CategoryService categoryService;

    @Override
    protected void fillModel(HttpServletRequest request, Model model, NaosCMSBrandsComponentModel component) {
        ...
        <Ici votre logique métier>
        ...
        model.addAttribute("lesDonnéesPourMaVues", data);
    }

}
Controller.java

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.