1

我是 Sap Hybris 的初学者。BookComponent我创建了一个新模型SimpleCMSComponent

<itemtypes>
        <itemtype code="BookComponent" extends="SimpleCMSComponent" generate="true" autocreate="true"
        jaloclass="com.training.core.jalo.BookComponent">
        <description>Used to display offers on homepage</description>
            <attributes>
                <attribute type="localized:java.lang.String" qualifier="headrerText">
                    <modifiers read="true" write="true" optional="true" />
                    <persistence type="property" />
                </attribute>
                <attribute type="localized:java.lang.String" qualifier="footerText">
                    <modifiers read="true" write="true" optional="true" />
                    <persistence type="property" />
                </attribute>
                <attribute type="Media" qualifier="bookImage">
                    <modifiers read="true" write="true" optional="false" />
                    <persistence type="property" />
                </attribute>
                <attribute type="BookLinksList" qualifier="bookImageLink">
                    <persistence type="property" />
                    <description>List of CMS Link Component</description>
                    <modifiers read="true" write="true" />
                </attribute>
            </attributes>
        </itemtype>
        </itemtypes>

<collectiontypes>
    <collectiontype code="BookLinksList" 
                   elementtype="CMSLinkComponent" 
                  autocreate="true" generate="true" type="list" />
</collectiontypes>

trainingcore-items.xml在 ant 全部成功并更新之后,即使在具有我们在文件中定义的所有属性的数据库中也可以正确创建我的模型。

然后我创建了一些 impex 来插入我的新组件,如下所示:

$contentCatalog=apparel-ukContentCatalog 
$contentCV=catalogVersion(CatalogVersion.catalog(Catalog.id[default=$contentCatalog]),CatalogVersion.version[default=Staged])[default=$contentCatalog:Staged]
$productCatalog=apparelProductCatalog 
$productCatalogName=Apparel Product Catalog 
$productCV=catalogVersion(catalog(id[default=$productCatalog]),version[default='Staged'])[unique=true,default=$productCatalog:Staged] 
$picture=media(code, $contentCV) ;

$siteResource=jar:de.hybris.platform.apparelstore.constants.ApparelstoreConstants&/apparelstore/import/sampledata/contentCatalogs/$contentCatalog
$jarResourceCms=jar:de.hybris.platform.apparelstore.constants.ApparelstoreConstants&/apparelstore/import/sampledata/cockpits/cmscockpit
$category=category(code, $productCV)
$lang=en


INSERT_UPDATE CMSLinkComponent ; $contentCV[unique=true] ; uid[unique=true]     ; name                   ; url                   ; &linkRef             ; &componentRef        ; target(code)[default='sameWindow'] ; $category


                               ;                         ; InformatiqueBookLink ; Informatique Book Link ; /InformatiqueBookLink ; InformatiqueBookLink ; InformatiqueBookLink ;                                    ;          
                               ;                         ; ScienceBookLink      ; Science Book Link      ; /ScienceBookLink      ; ScienceBookLink      ; ScienceBookLink      ;                                    ;          
                               ;                         ; AstroBookLink        ; Astro Book Link        ; /AstroBookLink        ; AstroBookLink        ; AstroBookLink        ;                                    ;          

INSERT_UPDATE Media ; $contentCV[unique=true] ; code[unique=true] ; @media[translator=de.hybris.platform.impex.jalo.media.MediaDataTranslator] ; mime[default='image/jpeg'] ; &imageRef  ; folder(qualifier)[default='images'] ; altText    
                    ;                         ; bookMedia         ; $siteResource/images/banners/homepage/books.jpeg                           ;                            ; books.jpeg ;                                     ; books.jpeg ;  

INSERT_UPDATE BookComponent ; $contentCV[unique=true] ; uid[unique=true]   ; name            ; headrerText[lang=$lang] ; footerText[lang=$lang] ; bookImage(code) ; &componentRef      ; bookImageLink(&linkRef)                           
                            ;                         ; bookofferComponent ; offer Component ; "Header text"           ; "Footer text"          ; bookMedia       ; bookofferComponent ; InformatiqueBookLink,ScienceBookLink,AstroBookLink

但插入未通过,并且在 hac cosnole 上显示此消息

NSERT_UPDATE BookComponent;catalogVersion(CatalogVersion.catalog(Catalog.id[default=apparel-ukContentCatalog]),CatalogVersion.version[default=Staged])[default=apparel-ukContentCatalog:Staged][unique=true];uid[unique=true];name;headrerText[lang=en];footerText[lang=en];bookImage(code);&componentRef;bookImageLink(&linkRef)
,,,,Exception : line 29: cannot create BookComponent with values ItemAttributeMap[ registry:  null, type: <null>, data: {bookimagelink=[8796256896060, 8796256928828, 8796256961596], uid=bookofferComponent, bookimage=bookMedia(bookMedia(8798226972702)), catalogversion=apparel-ukContentCatalog/Staged(8796093186649), headrertext={8796093055008->en=Header text}, name=offer Component, footertext={8796093055008->en=Footer text}} ] due to [de.hybris.platform.servicelayer.interceptor.impl.MandatoryAttributesValidator@113d6726]:valeurs manquantes pour [footerText, headrerText] dans le modèle BookComponentModel (<unsaved>) pour créer un nouveau BookComponent, Exception : line 3: cannot create BookComponent with values ItemAttributeMap[ registry:  null, type: <null>, data: {bookimagelink=[8796256896060, 8796256928828, 8796256961596], uid=bookofferComponent, bookimage=bookMedia(bookMedia(8798226972702)), catalogversion=apparel-ukContentCatalog/Staged(8796093186649), headrertext={8796093055008->en=Header text}, name=offer Component, footertext={8796093055008->en=Footer text}} ] due to [de.hybris.platform.servicelayer.interceptor.impl.MandatoryAttributesValidator@113d6726]:valeurs manquantes pour [footerText, headrerText] dans le modèle BookComponentModel (<unsaved>) pour créer un nouveau BookComponent;;bookofferComponent;offer Component;Header text;Footer text;bookMedia;bookofferComponent;InformatiqueBookLink,ScienceBookLink,AstroBookLink

但是我添加了所有必填字段。提前感谢大家。

4

2 回答 2

1

中的引号可能有问题"Footer text"。尝试删除它们或转义或用单引号'Footer text'或双双引号替换""Footer text""

于 2018-03-31T18:16:52.747 回答
1

您需要按代码和目录版本引用媒体。当您仅通过代码引用它时,只有在您的数据库中只有一个具有该特定代码的媒体时才会通过。一旦您同步了服装-ukContentCatalog,您的数据库中就会有两个带有代码“bookMedia”的媒体。一个在分阶段,一个在在线目录版本。所以使用:

bookImage(代码,$contentCV)

于 2018-04-04T07:18:18.297 回答