点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
我们要使用以下定义和重新声明使某些属性可写(用于hmc中的更改)
<属性>
<修饰符read =" true" write =" true"
optional =" true"/>
<修饰符read =" true" write =" true"
optional =" false"/>
...
但是在构建时会抛出以下异常:
[复制]将1个文件复制到C:\ hybris \ bin \ custom \ prj \ prjstorefront \ resources
[ycodegenerator] 13:04:41,952 [main] INFO CodeGenerator-开始代码生成...
建立失败
C:\ hybris \ bin \ platform \ build.xml:24:执行此行时发生以下错误:
C:\ hybris \ bin \ platform \ resources \ ant \ compiling.xml:80:exec时发生以下错误
说这行:
C:\ hybris \ bin \ platform \ resources \ ant \ antmacros.xml:700:exe时发生以下错误
剪掉这条线:
C:\ hybris \ bin \ platform \ resources \ ant \ antmacros.xml:703:java.lang.IllegalArgumentException:ca
由于属性'Consignment.namedDeliveryDate(java.u)重复,因此未将名称空间((prjcore))合并到(())中
til.Date):(((prjcore)):: YAttributeDescriptor [prjcore-items.xml:1424(AttributeTagListener)] [null]'vs'Consignme
nt.namedDeliveryDate(java.util.Date):((basecommerce)):: YAttributeDescriptor [basecommerce-items.xml:858(AttributeTagListe
ner)] [PROPERTY]'
在de.hybris.bootstrap.typesystem.YNamespace.mergeNamespace(YNamespace.java:286)
在de.hybris.bootstrap.typesystem.YTypeSystem.mergeNamespaces(YTypeSystem.java:86)
在de.hybris.bootstrap.typesystem.YTypeSystem.finalizeTypeSystem(YTypeSystem.java:77)
在de.hybris.bootstrap.typesystem.YTypeSystemLoader.finish(YTypeSystemLoader.java:583)
在de.hybris.bootstrap.typesystem.YTypeSystemSource.readTypeSystem(YTypeSystemSource.java:125)
在de.hybris.bootstrap.typesystem.YTypeSystemSource.getTypeSystem(YTypeSystemSource.java:55)
在de.hybris.bootstrap.codegenerator.jalo.JaloClassGenerator.generateClasses(JaloClassGenerator.java:50)
在de.hybris.bootstrap.codegenerator.CodeGenerator.generateJaloClasses(CodeGenerator.java:210)
在de.hybris.bootstrap.codegenerator.CodeGenerator.generate(CodeGenerator.java:182)
在de.hybris.bootstrap.codegenerator.CodeGenerator.generate(CodeGenerator.java:332)
在de.hybris.ant.taskdefs.compiling.CodeGeneratorTask.execute(CodeGeneratorTask.java:31)
在org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
在sun.reflect.GeneratedMethodAccessor4.invoke(未知来源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
在java.lang.reflect.Method.invoke(Method.java:606)
在org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
在org.apache.tools.ant.Task.perform(Task.java:348)
在org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
在net.sf.antcontrib.logic.IfTask.execute(IfTask.java:197)
在sun.reflect.GeneratedMethodAccessor23.invoke(未知来源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
在java.lang.reflect.Method.invoke(Method.java:606)
在org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
在org.apache.tools.ant.TaskAdapter.execute(TaskAdapter.java:154)
在org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
在sun.reflect.GeneratedMethodAccessor4.invoke(未知来源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
在java.lang.reflect.Method.invoke(Method.java:606)
在org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
在org.apache.tools.ant.Task.perform(Task.java:348)
在org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
在org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
在sun.reflect.GeneratedMethodAccessor4.invoke(未知来源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
在java.lang.reflect.Method.invoke(Method.java:606)
在org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
在org.apache.tools.ant.Task.perform(Task.java:348)
在org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:396)
在org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
在sun.reflect.GeneratedMethodAccessor4.invoke(未知来源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
如果有一个简单的解决方案来完成这项工作,那将是很好的。
大家好!
我尝试在5.2混合环境中重现此内容。 是的,如Wiki链接所述 https://wiki.hybris。 com/display/release5/items.xml#items.xml-创建子类型并为子类型添加属性
redeclaring属性不能在基础项目类型上使用,只能在扩展项目类型上应用。
通过声明,我设法使" namedDeliveryDate"属性可编辑(我在HMC中创建了一个实例)
注意:我修改了initial =" false"使其成为非初始属性。
必须在项目创建期间设置初始属性,稍后可以设置非初始值。 根据 https://wiki.hybris.com/display/release5/Type+System +文档"覆盖默认创建机制"部分。
也不要忘记在定义扩展项目类型的自定义扩展中添加extensioninfo.xml。 希望它有用。
亲切的问候
Lily
它按预期工作。
谢谢Lily
我们使用hybris 4.8.15并找到了解决此问题的解决方法:此外,您需要覆盖派生项的Jalo类中的setNamedDeliveryDate方法。
公共类DeliveryConsignment扩展了GeneratedDeliveryConsignment {/** * {@inheritDoc}。 修饰符initial已设置为false,尽管如此,类* {@link de.hybris.platform.ordersplitting.jalo.GeneratedConsignment}中的生成方法已将initial属性设置为true。 * * @请参见de.hybris.platform.ordersplitting.jalo.GeneratedConsignment#setNamedDeliveryDate(SessionContext,* java.util.Date)*/@Override protected void setNamedDeliveryDate(final SessionContext ctx,final Date value){super.setProperty(ctx, NAMEDDELIVERYDATE,值); }
}
在示例中添加扩展关键字
redeclare =" true"可以按预期工作,当我们尝试在扩展OOTB类型的自定义类型中修改OOTB类型属性时。
示例:
是否有上述问题的线索?
您真的尝试过吗?
因为使用hybris 5.1,即使您引入了子类型,它仍然不起作用:
更新平台并创建订单后,尝试编辑" CustomConsignment"的" namedDeliveryDate"时,仍然会出现异常:
我认为这是因为" namedDeliveryDate"被定义为" initial",似乎无法重新声明" initial"。 也许某些类型系统专家可以在这里进行说明?
一周热门 更多>