1

このクラスで「フォームをデータにバインド」を使用して、Vaadinでフォームを作成しようとしています:

public class Job {

    private String nom_projet;
    private String svn;
    private String planning1;
    private String planning2;
    private String goals;
}

ゲッターとセッターで。

これを試してみると、すべてうまくいきます:

final Form form = new Form();
Job bean = new Job();
BeanItem<Job> item = new BeanItem<Job>(bean);
form.setItemDataSource(item);

「Book of Vaadin」で説明されているようなカスタム フィールドを追加しようとしたので、このクラスを作成しました。

public class MyFieldFactory implements FormFieldFactory  {

    private static final long serialVersionUID = 1L;

    public Field createField(Item item, Object propertyId, Component uiContext) {
        Select select = new Select("goals");
        select.addItem("compiler:compile");
        select.addItem("clean install");
        select.addItem("clean");
        select.addItem("package");
        select.addItem("test");
        select.setNewItemsAllowed(true);
        return select;
    }
}

しかし、このステートメントをに追加したいときMyApplication.java

form.setFieldFactory(new MyFieldFactory());

setFieldFactory」に下線が引かれ、選択肢が 3 つあります。

  • () 引数 1 を FieldFactory にキャストする
  • setFirldFormFactory(...) に変更
  • 「MyFieldFactory」に「FieldFactory」を実装させます

クリックすると:

  • 「MyFieldFactory」に「FieldFactory」を実装させます

カスタム フィールドはフォームに表示されません。

4

1 に答える 1

2

setFieldFactoryメソッドはパラメータとしてを取り、クラスFieldFactoryは同じではないものをMyFieldFactory実装します。FormFieldFactory

Vaadin javadocでは、setFieldFactoryは非推奨としてマークされており、setFormFieldFactory(FormFieldFactory formFieldFactory)代わりに使用することを示唆しています。

この方法を使用すると、問題が解決します。

よろしく。

于 2012-04-17T00:55:57.943 に答える