2012-04-25 15 views
0

イベント後に再読み込みされるvaadinフォームがあります。イベントによって、フィールドの一部がnullになります。これは、フォームがフィールドのラベルと "null"を表示することを意味します。イベントが読み込まれた後、ラベルと "null"値が消えるようにしたいと思います。私はまた、フォームをnull値で置き換えるために別のフォームをロードせずにこれを行いたいと思います。vaadinフォームはnullフィールドを非表示にできません。

私はフォームの次のコンストラクタを持っている:

public IInfoForm(Info info) { 
    List<Object> orderedProperties =Arrays.asList(InfoContainer.DISPLAYED_FIELDS); 
    setItemDataSource(new BeanItem(idInfo), orderedProperties); 

情報コンテナは、Webサービスからデータを取得し、DISPLAYED_FIELDSは、表示するフィールドを示します。
私はフォームフィールドに設定するプロパティを探してみましたが、役に立たないです。

答えて

1

任意のフィールドに対して、NULL値を表す特別な値を設定できます。例:

TextField textfield = new TextField(); 
textfield.setNullRepresentation("abc"); 

したがって、nullの代わりに "abc"がテキストフィールドに表示されます。

フィールドを自分で作成し、フォームに追加するかFieldFactoryをフォームに追加します。

Form form = new Form(); 
form.setFormFieldFactory(new FormFieldFactory() { 
    public Field createField(Item item, Object propertyId, 
      Component uiContext) { 
     Field field = DefaultFieldFactory.get().createField(item, 
       propertyId, uiContext); 
     if (field instanceof TextField) { 
      ((TextField) field).setNullRepresentation("abc"); 
     } 
     return field; 
    } 
}); 
0

私はそう、私はorderedPropertiesリストからNULL値を持つフィールドを削除し、そのリストを

setItemDataSource(new BeanItem(idInfo), orderedProperties); 

を呼び出すことを行うにしようとするだろう。

関連する問題