Jahia:在选择列表初始化程序中添加 2 个混合?

Posted

技术标签:

【中文标题】Jahia:在选择列表初始化程序中添加 2 个混合?【英文标题】:Jahia : Add 2 mixins in a choicelist initializer? 【发布时间】:2017-11-03 10:15:17 【问题描述】:

我有一个choicelist initializer,它允许用户选择“图像”或“视频”。我需要那个:

如果选择了“视频”类型,则应用 mixin umix:video 如果选择了“图像”类型,则应用 mixins umix:image umix:link

有可能吗?

这是我所拥有的一个最小示例(问题在代码中作为注释):

definitions.cnd

[unt:homeHeader] > jnt:content
 - type (string, choicelist[homeHeaderTypeListInitializer,resourceBundle]) = 'image' mandatory autocreated nofulltext

[umix:video] > jmix:templateMixin mixin
 extends = unt:homeHeader
 - video (weakreference, picker[type='video'])  i18n mandatory < jnt:file

[umix:image] > jmix:templateMixin mixin
 extends = unt:homeHeader
 - image (weakreference, picker[type='image'])  i18n mandatory < jnt:file

[umix:link] > jmix:templateMixin mixin
 extends = unt:homeHeader
 - title (string) i18n < '^.1,255$'
 - url (string) = 'https://' i18n mandatory indexed=no

homeHeaderTypeListInitializer.java

public List<ChoiceListValue> getChoiceListValues(ExtendedPropertyDefinition epd, String param, List<ChoiceListValue> values, Locale locale, Map<String, Object> context) 
        List<ChoiceListValue> myChoiceList = new ArrayList<>();

        if (context == null) 
            return myChoiceList;
        
        HashMap<String, Object> myPropertiesMap;

        myPropertiesMap = new HashMap<>();
        myPropertiesMap.put("addMixin", "umix:image");
        // HOW CAN I ADD THE SECOND MIXIN umix:link HERE ?
        myChoiceList.add(new ChoiceListValue("image", myPropertiesMap, new ValueImpl("image", PropertyType.STRING, false)));

        myPropertiesMap = new HashMap<>();
        myPropertiesMap.put("addMixin", "umix:video");
        myChoiceList.add(new ChoiceListValue("video", myPropertiesMap, new ValueImpl("video", PropertyType.STRING, false)));

        return myChoiceList;
    

我知道我可以使用 umix:imageumix:link 等的所有属性创建一个 mixin,但我想知道是否有任何选项可以避免这种情况。

谢谢

【问题讨论】:

【参考方案1】:

作为一种解决方法,您是否在 cnd 文件中尝试过类似的操作?这个想法是添加一个新的 umix:videoimage 嵌入许多 mixin。也许它会解决你的问题...

[umix:videoMix] mixin
 - video (weakreference, picker[type='video'])  i18n mandatory < jnt:file

[umix:imageMix] mixin
 - image (weakreference, picker[type='image'])  i18n mandatory < jnt:file


[umix:video] > umix:templateMixin,umix:videoMix mixin
 extends = unt:homeHeader

[umix:image] > umix:templateMixin,umix:imageMix mixin
 extends = unt:homeHeader

[umix:videoimage] > umix:templateMixin,umix:videoMix,umix:imageMix mixin
 extends = unt:homeHeader

【讨论】:

以上是关于Jahia:在选择列表初始化程序中添加 2 个混合?的主要内容,如果未能解决你的问题,请参考以下文章

从外部应用程序安全调用jahia页面

如何更改 Jahia 中的会话超时?

如何在java中混合2个列表

如何在 IOS 6.0(Iphone) 中通过 jquery 为混合应用程序关闭选择器的 onchange 事件下拉列表

在python中怎么把列表中的元素添加到字典中

使用 Jahia 在 JSP 中获取当前节点?