Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > GWT GXT Form get values


Автор: Atum 15.5.2014, 13:54
добрый день ! 
вопрос как получить данные из активной формы : 

Есть набор табов - на активном табе у нас заполнена форма , мне нужно получить данные из этой формы (заполненную модель)

проблема в том что   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"));


вопрос как вытащить с активной формы заполненную модель (заполненные поля)

Автор: Mirkes 20.5.2014, 17:36
Вопрос не совсем понятен. Если вопрос как из JTabbedPane получить активную закладку?
Тогда getSelectedComponent() или getSelectedIndex()
Далее все понятно, поскольку компоненты - потомки одного предка. Берете и разбираете. Правда я лучше бы добавил в предка метод типа дай контент и получал список пар - имя поля, значение.
Вроде так можно поступать. По крайней мере однажды я так разбирался.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)