2012-04-25 148 views
0

我有一些vaadin表单在事件后重新加载。该事件导致一些字段变为空。这意味着表单显示字段的标签和“null”。在加载事件后,我希望标签和“null”值都消失。我也想这样做而不加载一个不同的窗体来替换窗体的空值。vaadin表单无法隐藏空字段

我对形式下面的构造:

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

的信息容器从一个web服务检索数据和DISPLAYED_FIELDS列出了要显示的字段。
我试图寻找属性来设置表单域,但无济于事。

回答

1

您可以为任何字段设置一个代表空值的特殊值。例如:

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

因此,而不是空“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列表空值的字段和调用

setItemDataSource(new BeanItem(idInfo), orderedProperties); 

与该名单。