Ext GWT bietet eine einfache Möglichkeit, JavaBeans an Formulare zu binden. Im ersten Schritt muss die Bean dazu vorbereitet werden.
- Die JavaBean implementiert das Marker-Interface com.extjs.gxt.ui.client.data.BeanModelTag.
- Will man’s nicht-invasiv, so deklariert man ein Zusatz-Interface, was BeanModelMarker erweitert und hängt dort eine spezielle Zusatz-Annotation an, mit dem Verweise auf die JavaBean.
Gebunden werden soll der Titel eines Seminars an das Textfeld titleTextField auf dem FormPanel:
FormPanel courseDescriptionPanel = new FormPanel();
TextField<String> titleTextField = new TextField<String>();
titleTextField.setFieldLabel( „Kurstitel“ );
titleTextField.setName( „title“ );
titleTextField.setAllowBlank( false );
courseDescriptionPanel.add( titleTextField );
Im nächsten Schritt kann man die Bean aufbauen und etwa mit Werten aus einem Service füllen:
Course c = new Course();
c.setTitle( „ejb super kurs“ );
Dann wird um diese Standard-JavaBean eine Ext GWT-Klasse gelegt, quasi ein Wrapper:
BeanModel userModel = BeanModelLookup.get().getFactory(Course.class).createModel( c );
Dieses BeanModel wird als nächstes mit dem FormPanel verbunden, auf dem das Texteingabefeld liegt.
FormBinding formBindingCourse = new FormBinding( courseDescriptionPanel );
Und das muss mit dem BeanModel (dem Wrapper um das Exemplar unserer JavaBean) verbunden werden:
formBindingCourse.bind( userModel );
Nun kennt der formBindingCourse die Bean, aber noch nicht, welches Gui-Element eigentlich mit welcher Property verbunden ist. Das kann man mit autoBind() automatisieren, oder aber mit addFieldBinding() manuell für jedes Element setzen. Bei unserem Textfeld heißt das:
formBindingCourse.addFieldBinding( new FieldBinding( titleTextField, „title“ ) );
Jede Änderung an der Gui wird nun an die Bean weitergeben.
Weiteres Infos unter http://extjs.com/blog/2008/07/14/preview-java-bean-support-with-ext-gwt/ oder in Foren-Beispielen.
Konnte das Binding leider nicht realisieren da BeanModelLookup.get() „stets“ null liefert??