2010-04-02 5 views
1

У меня есть приложение приложения AWT, которое нужно портировать на GWT. Экраны апплета описаны в метаданных, и апплет отображает каждый экран динамически с использованием отражения.Динамическое создание экранов GWT с использованием метаданных?

Мы хотели бы то же самое в GWT/ExtGWT.

Я построил рабочую версию этого ExtJS, посредством которой метаданные превращаются в конфигурационные файлы ExtJS в виде JSON. Недостатком такого подхода является «проводка» элементов управления, которые должны быть записаны в Javascript.

GWT предпочтительнее, так как это будет весь код Java, без JS. При рытье можно отобразить экраны с помощью GWT с метаданных с помощью GWT.create().

Проблема, связанная с подключением динамически созданной кнопки, например, к обработчику событий, требует отражения, которое не поддерживается в GWT.

Правильно ли это заключение? и если да, есть ли другие способы достижения этого типа динамического интерфейса с помощью ExtGWT?

+0

Можете ли вы привести пример, как выглядят метаданные? почему вам вообще нужно размышлять, если у вас уже есть метаданные? – Fabian

+0

В метаданных описываются виджеты экрана, окна, панели, кнопки, сетка. Мне нужно связать события, такие как «щелкнуть», которые запускают эти объекты для обработчиков событий, написанных в java. Что-то вроде myButton.addActionListener ( (ActionListener) EventHandler.create (ActionListener.class, frame, HandleClicked)); где «HandleClicked» поступает из метаданных и относится к функции, определенной в другом месте. –

ответ

0

Для extGWT, где у нас нет декларативного пользовательского интерфейса, самым простым решением может быть просто добавление сопоставления/конфигурации ваших обработчиков в java, которые относятся к экземпляру классов. обработчиков, т.е .:

Map<String, ActionListener> mapping = new HashMap<String, ActionListener>(); 
mapping.put("HandleClicked", new HandleClickedActionListener()); 

, то вы можете попытаться найти реализующий класс для мета-данных.

Для чистого GWT 2 вы можете посмотреть http://code.google.com/intl/de-DE/webtoolkit/doc/latest/DevGuideUiBinder.html#Simple_binding о том, как это делается. возможно, будет создано аналогичное решение, которое аннотирует методы для вашего собственного решения extgwt, такого как gwt.

Смежные вопросы