Дерево DOM видимости Vaadin

Вопрос. Когда вы устанавливаете видимость макета, он либо добавляется в дерево DOM, либо удаляется из него. Что vaadin делает с удаленной частью? Кэширует ли он его или создается заново, когда вы снова устанавливаете видимость? И если он воссоздается, все его подкомпоненты также повторно присоединяются?

Причина, по которой я спрашиваю, заключается в том, что, когда у меня был VerticalLayout с формой в нем, и форма, в которой он сам использовал приведенный ниже код, я не мог видеть свои текстовые поля, размер которых был установлен на 100%, когда я перешел из layout.setVisible(true) - > false -> и показать еще раз.

private Form getAttachedForm() {
    return new Form(){
        private static final long serialVersionUID = 1L;

        @Override
        protected void attachField(Object propertyId, Field field){
            if(field instanceof TextField){
                TextField tf = (TextField)field;
                tf.setWidth("100%");
            }else if(field instanceof DateField){
                DateField df = (DateField)field;
                df.setResolution(DateField.RESOLUTION_DAY);
                df.setDateFormat("yyyy-MM-dd");
            }
            super.attachField(propertyId, field);
        }
    };
}

person Marthin    schedule 13.10.2011    source источник


Ответы (1)


Vaadin не удаляет элементы из DOM, а устанавливает свойство display (CSS) элемента(ов). Однако похоже, что информация о размерах также удалена, и может быть ошибка, из-за которой вычисления не выполняются, когда компоненты снова становятся видимыми.

Отчет об ошибке на dev.vaadin.com будет очень признателен.

person Jonatan    schedule 07.11.2011