如何在 Items.xml Hybris 中为项目的地图属性设置默认值?

How to set Default Value for a Map attribute of an item in Items.xml Hybris?

我需要使用默认值 map 来初始化项目的 maptyped 属性。

假设我们已经定义了一个地图类型

<maptype code="dummyMap" argumenttype="java.lang.String" returntype="java.lang.String" autocreate="true" generate="false" />

并且我们已将项目类型声明为

<itemtype code="dummyItem" autocreate="true" ...>
  <attributes>
    <attribute qualifier="dummyAttribute" type="dummyMap">
        <defaultvalue>???</defaultvalue>  <<<<<========= How should we initialize ?????
    </attribute>
  </attributes>
</itemtype>

作为枚举类型属性的类似情况的示例,我们将默认值定义为

<defaultvalue>em().getEnumerationValue("dummyEnum","dummyEnum_Value")</defaultvalue>

我们如何对 Maptyped 属性应用相同的方法。请让我知道如何使用映射值初始化属性。

使用 Hybris 的 latset 版本,您可以尝试传递 java.util.Collections.singletonMap 例如

<defaultvalue>java.util.Collections.singletonMap("one", java.math.BigDecimal.ONE)</defaultvalue>

我用Hybris v1811测试的时候(如下图),

<items xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="items.xsd">

    <maptypes>
        <maptype code="DummyMap"
                 argumenttype="java.lang.String"
                 returntype="java.math.BigInteger"
                 autocreate="true"
                 generate="false"/>
    </maptypes>
    <itemtypes>
        <itemtype code="DummyItem" autocreate="true">
            <deployment table="DummyItem" typecode="30001" />
            <attributes>
                <attribute qualifier="uname" type="java.lang.String">
                    <modifiers read="true" write="true" search="true" initial="true" optional="false"/>
                    <defaultvalue>"Hello"</defaultvalue>
                    <persistence type="property"></persistence>
                </attribute>
                <attribute qualifier="dummyAttribute" type="DummyMap">
                    <modifiers read="true" write="true" search="true" initial="true" optional="false"/>
                    <defaultvalue>java.util.Collections.singletonMap("one", java.math.BigDecimal.ONE)</defaultvalue>
                    <persistence type="property"></persistence>
                </attribute>
            </attributes>
        </itemtype>
    </itemtypes>
</items>

XML DummyItem 后台 中的 表示:

<itemtype code="DummyItem" extends="GenericItem" jaloclass="org.training.jalo.DummyItem" generate="true" singleton="false" jaloonly="false" autocreate="true">
    <deployment table="dummyitem" typecode="30001"/>
    <attributes>
        <attribute generate="true" autocreate="true" qualifier="dummyAttribute" type="DummyMap"><!-- could not export defaultvalue '{one=1}' -->

            <persistence type="property" qualifier=""/>
            <modifiers read="true" write="true" search="true" encrypted="false" optional="false" removable="true" initial="true" unique="false" private="false" partof="false"/>
        </attribute>
        <attribute generate="true" autocreate="true" qualifier="uname" type="java.lang.String">
            <defaultvalue>
new java.lang.String( "Hello" )
            </defaultvalue>
            <persistence type="property" qualifier=""/>
            <modifiers read="true" write="true" search="true" encrypted="false" optional="false" removable="true" initial="true" unique="false" private="false" partof="false"/>
        </attribute>
    </attributes>
</itemtype>

如您所见,它能够传递 new java.lang.String( "Hello" ) 作为属性 uname 的默认值,但对于属性 dummyAttribute,它显示 <!-- could not export defaultvalue '{one=1}' -->.