有没有办法让 SmartEdit 的子组件中的 OOTB 组件字段可选?
例如,我通过创建子组件来扩展CMSParagraphComponent ,例如扩展 CMSParagraphComponent 的MyCustomParagraphComponent。
OOTB CMSParagraphComponent -> content 属性是强制性的,如其 CMS Structure API 中所定义
<bean class="de.hybris.platform.cmsfacades.types.service.impl.DefaultComponentTypeAttributeStructure" p:typecode="CMSParagraphComponent" p:qualifier="content">
<property name="populators">
<set>
<ref bean="richTextComponentTypeAttributePopulator" />
<ref bean="requiredComponentTypeAttributePopulator" />
</set>
</property>
</bean>
requiredComponentTypeAttributePopulator使此属性成为必需的。此外,OOTB SmartEdit 也使用 cmsParagraphComponentValidator 进行后端验证。
现在我想让我的自定义 MyCustomParagraphComponent 的内容属性可选
我尝试使用 required=false 创建新的 populator bean unRequiredComponentTypeAttributePopulator 并将其分配给我的自定义组件的内容属性,但这不起作用
尝试这样的事情......
<bean id="unRequiredComponentTypeAttributePopulator" class="de.hybris.platform.cmsfacades.types.populator.RequiredComponentTypeAttributePopulator">
<property name="required" value="false" />
</bean>
<bean class="de.hybris.platform.cmsfacades.types.service.impl.DefaultComponentTypeAttributeStructure" p:typecode="PromotionalBannerComponent" p:qualifier="content">
<property name="populators">
<set>
<ref bean="unRequiredComponentTypeAttributePopulator" />
</set>
</property>
</bean>
但这不起作用。看起来 CMS Structure API 仅适用于那些直接分配给该组件而不是父组件的属性。
那么正确的方法是什么?