2015-03-20 1 views
3

Мне нужно создать компонент окна из ZUML с использованием разных композиторов. Но я не могу понять, как это сделать программно. Он отлично работает, когда я применяю композитор к окну в файле ZUML.Программно добавить композитор при создании компонента

Это работает

dataTemplate.zul

<window id="dataTemplateWindow" 
apply="dk.dataproces.cpraap.controllers.DataTemplateWindowController"> 
      .... 

Контроллер

dataTemplateWindow = (Window) Executions.createComponents(
       "dataTemplate.zul", homeWindow, null); 

Я хотел бы сделать что-то вроде этого

Нет ком poser добавляется в ZUML, и вместо этого он добавляется программно.

Map data = new HashMap(); 
data.put("composer","dk.dataproces.cpraap.controllers.DataTemplateWindowController"); 
dataTemplateWindow = (Window) Executions.createComponents("dataTemplate.zul", homeWindow, data); 

Причина в том, что мне нужно подключить разные контроллеры к тому же ZUML.

ответ

2

Ваш почти там.

Вам просто нужно объявить во втором зуле, что композитор приходит с карты arg.

Вы можете сделать это в Зула по:

apply="${arg.composer}" 

Here is a test fiddle where I did it.

+0

Спасибо, что работали именно так, как задумано. –

+0

Ваш прием, всегда там, чтобы помочь. – chillworld