Джахия: Добавить 2 миксина в инициализатор списка выбора?
У меня есть инициализатор списка выбора, который позволяет пользователю выбрать "изображение" или "видео". Я нуждаюсь в этом:
- если выбран тип видео, примените миксин
umix:video
- если выбран тип изображения, примените миксин
umix:image
а такжеumix:link
Является ли это возможным?
Вот минимальный пример того, что у меня есть (вопрос в коде в качестве комментария):
определения.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:image
а также umix:link
и т.д., но я хочу знать, есть ли возможность избежать этого.
Спасибо
1 ответ
В качестве обходного пути вы пробовали что-то подобное в файле cnd? Идея состоит в том, чтобы добавить новый umix: видеоизображение, в которое встроено много миксинов. Может быть, это решит вашу проблему...
[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