]> source.dussan.org Git - vaadin-framework.git/commitdiff
Migrate AutoGeneratingAFormBasedOnABeanVaadin6StyleForm
authorErik Lumme <erik@vaadin.com>
Fri, 15 Sep 2017 08:51:29 +0000 (11:51 +0300)
committerErik Lumme <erik@vaadin.com>
Fri, 15 Sep 2017 08:51:29 +0000 (11:51 +0300)
documentation/articles/AutoGeneratingAFormBasedOnABeanVaadin6StyleForm.asciidoc [new file with mode: 0644]
documentation/articles/contents.asciidoc

diff --git a/documentation/articles/AutoGeneratingAFormBasedOnABeanVaadin6StyleForm.asciidoc b/documentation/articles/AutoGeneratingAFormBasedOnABeanVaadin6StyleForm.asciidoc
new file mode 100644 (file)
index 0000000..8c4851b
--- /dev/null
@@ -0,0 +1,45 @@
+[[auto-generating-a-form-based-on-a-bean-vaadin-6-style-form]]
+Auto-generating a form based on a bean - Vaadin 6 style Form
+------------------------------------------------------------
+
+In Vaadin 6 it is easy to get a completely auto generated form based on
+a bean instance by creating a `BeanItem` and passing that to a Form. Using
+`FieldGroup` this requires a few extra lines as `FieldGroup` never adds
+fields automatically to any layout but instead gives that control to the
+developer.
+
+Given a bean such as this `Person`:
+
+[source,java]
+....
+public class Person {
+  private String firstName,lastName;
+  private int age;
+  // + setters and getters
+}
+....
+
+You can auto create a form using FieldGroup as follows:
+
+[source,java]
+....
+public class AutoGeneratedFormUI extends UI {
+  @Override
+  public void init(VaadinRequest request) {
+    VerticalLayout layout = new VerticalLayout();
+    setContent(layout);
+
+    FieldGroup fieldGroup = new BeanFieldGroup<Person>(Person.class);
+
+    // We need an item data source before we create the fields to be able to
+    // find the properties, otherwise we have to specify them by hand
+    fieldGroup.setItemDataSource(new BeanItem<Person>(new Person("John", "Doe", 34)));
+
+    // Loop through the properties, build fields for them and add the fields
+    // to this UI
+    for (Object propertyId : fieldGroup.getUnboundPropertyIds()) {
+      layout.addComponent(fieldGroup.buildAndBind(propertyId));
+    }
+  }
+}
+....
index 830c8eeb9f50b70d7ceac0c05d3b2ea11ee22d79..2f3ce98a5003d9911e711454ff27c1efb0c9bfcf 100644 (file)
@@ -21,3 +21,4 @@
 - link:AddingJPAToTheAddressBookDemo.asciidoc[Adding JPA to the address book demo]
 - link:SimplifiedRPCusingJavaScript.asciidoc[Simplified RPC using JavaScript]
 - link:JMeterTesting.asciidoc[JMeter testing]
+- link:AutoGeneratingAFormBasedOnABeanVaadin6StyleForm.asciidoc[Auto-generating a form based on a bean - Vaadin 6 style Form]