如何在 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}' -->
.
我需要使用默认值 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}' -->
.