добрый день ! вопрос как получить данные из активной формы :
Есть набор табов - на активном табе у нас заполнена форма , мне нужно получить данные из этой формы (заполненную модель)
проблема в том что ActiveWidget вернет мне VerticalLayoutContainer ,а не мою форму ?!
плюс проблема каста интерфейса IsWidget и класса Widget.
Код | Widget activeTab = tabPanel.getActiveWidget(); IRequestModel form = (IRequestModel) activeTab;
com.google.gwt.event.shared.UmbrellaException: Exception caught: com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer cannot be cast to ru.stoloto.testtool.gwt.httpext.client.forms.IRequestModel at com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:129) at com.google.gwt.user.client.ui.Widget.fireEvent(Widget.java:129) at com.google.gwt.event.dom.client.DomEvent.fireNativeEvent(DomEvent.java:116) at com.google.gwt.user.client.ui.Widget.onBrowserEvent(Widget.java:177)
|
Есть абстрактная форма - для биндинга на огромную модель RequestModel:
IRequestModel - маркет интерфейс
Код | public abstract class RequestFormEditor implements IsWidget, Editor<RequestModel>,IRequestModel {
interface RequestFormDriver extends SimpleBeanEditorDriver<RequestModel, RequestFormEditor> { } private RequestFormDriver driver = GWT.create(RequestFormDriver.class); protected VerticalLayoutContainer p;
public RequestFormDriver getDriver() { return driver; } }
|
модель с кучей полей :
Код | public class RequestModel implements Serializable { private static final long serialVersionUID = 1L;
public RequestModel(int massegeId) { this.id = massegeId; } private int id; // private int private int private int private String private int
public int get...
public void set...
}
|
и так для реализации конкретной формы мы создаем наследника класса RequestFormEditor с конкретной моделью - набором полей
Код | public class Form1 extends RequestFormEditor {
public Form1() { } private TextField textField1; private TextField textField2; private TextField textField3; ...
protected RequestModel requestModel = new RequestModel(1); // определяем тем самым какая часть модели будет заполнена.
@Override public Widget asWidget() { if (p == null) {
p = new VerticalLayoutContainer();
// поля конкретной формы .... }
@Override public RequestModel getModel() { requestModel = getDriver().flush(); return requestModel; }
|
код создания форм
Код | Form1 form1 = new Form1(); tabPanel.add(form1, new TabItemConfig("FormId 1"));
Form2 form2 = new Form2(); tabPanel.add(form2, new TabItemConfig("FormId 2"));
|
вопрос как вытащить с активной формы заполненную модель (заполненные поля) |