Hi there,
the BeanItem’s values are always null but i don’t know why … ?? Is my implementation correct?
The entity is created but the values are null …
package org.guitest.gui.dialogs.firms;
import com.vaadin.addon.beanvalidation.BeanValidationForm;
import com.vaadin.data.Item;
import com.vaadin.data.util.BeanItem;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Component;
import com.vaadin.ui.Field;
import com.vaadin.ui.Form;
import com.vaadin.ui.FormFieldFactory;
import com.vaadin.ui.Select;
import com.vaadin.ui.TextField;
import com.vaadin.ui.VerticalLayout;
import java.util.Arrays;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import org.ba.thueringen.guitest.controller.FirmaSessionBean;
import org.ba.thueringen.guitest.gui.MainWindow;
import org.ba.thueringen.guitest.model.Firma;
import org.ba.thueringen.guitest.util.BeanLocator;
/**
*
-
@author jakob
*/
public class FirmDetail extends VerticalLayout implements Button.ClickListener, FormFieldFactory {private BeanItem firmaItem = null;
private Form editor;
private Button save;
private Button cancel;
private MainWindow mainWindow;
FirmaSessionBean firmaSessionBean;public FirmDetail(MainWindow mainWindow, Firma firma) {
this.mainWindow = mainWindow;
firmaSessionBean = (FirmaSessionBean) new BeanLocator.GlobalJNDIName().withModuleName(“GUI-Test”).withBeanName(FirmaSessionBean.class).locate();
//Create new Firm
if (firma == null) {
this.firmaItem = new BeanItem(new Firma());
mainWindow.clearComponents(“Firma anlegen”, “Firmen - Firma anlegen”, this);
} //Edit existing Firm
else {
this.firmaItem = new BeanItem(firma);
mainWindow.clearComponents(“Firma editieren”, “Firmen - Firma editieren”, this);
}save = new Button("Speichern"); cancel = new Button("Abbrechen"); save.addListener(this); cancel.addListener(this); editor = new BeanValidationForm<Firma>(Firma.class); editor.setFormFieldFactory(this); editor.setWriteThrough(false); editor.setImmediate(true); editor.setItemDataSource(firmaItem, Arrays.asList("name1", "name2", "name3")); editor.getFooter().addComponent(save); editor.getFooter().addComponent(cancel); addComponent(editor);
}
@Override
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public void buttonClick(ClickEvent event) {
try {
if (event.getButton() == save) {
firmaSessionBean.addEntity(firmaItem.getBean());
editor.commit();
new FirmsList(mainWindow);
}
if (event.getButton() == cancel) {
editor.discard();
new FirmsList(mainWindow);
}
} catch (Exception e) {
e.printStackTrace();
}
}@Override
public Field createField(Item item, Object propertyId, Component uiContext) {
// Identify the fields by their Property ID.
String pid = (String) propertyId;
if (“name1”.equals(pid)) {
TextField textField = new TextField(“Name1”);
textField.setNullRepresentation(“”);
return textField;
}
if (“name2”.equals(pid)) {
return new TextField(“Name2”);
}
if (“name3”.equals(pid)) {
return new TextField(“Name3”);
}if ("client".equals(pid)) { Select select = new Select("City"); select.addItem("Berlin"); select.addItem("Helsinki"); select.addItem("London"); select.addItem("New York"); select.addItem("Turku"); select.setNewItemsAllowed(true); return select; } return null;
}
}