1

它只是一个简单的 TEST 应用程序

import br.com.elf.ui.IndexApplication;

public class IndexApplication extends Application {

    public void init() {
        setMainWindow(getStartUpWindow());
    }

    private Window getStartUpWindow() {
        Window mainWindow = new Window();

        mainWindow.addComponent(
            new Label(new Property() {
                public Object getValue() {
                    return "DataModel Example";
                }

                public void setValue(Object value) throws ReadOnlyException, ConversionException {
                    throw new ReadOnlyException();
                }

                public Class<?> getType() {
                    return String.class;
                }

                public boolean isReadOnly() {
                    return true;
                }

                public void setReadOnly(boolean readyOnly) {
                    // Empty body
                }
            ));
        }

        return mainWindow;
    }

}

注意我有一个普通的标签字段。我知道我可以打电话

mainWindow.addComponent(new Label("DataModel Example"));

反而。但是为了了解 Property DataModel 在幕后是如何工作的,我添加了一个 Property 实现。但不是在输出中看到

数据模型示例

我明白了

br.com.elf.ui.IndexApplication$1@63a721

为什么 ???

而在 Property 接口中定义的 Object getType() 方法的真正目的是什么???如果 HTML 以纯字符串显示其输出,那么我认为没有理由实现 Object getType(),不要???

问候,

4

1 回答 1

3

我发现了原因,

用于以人类可编辑的文本格式显示其值的方法是toString。正如属性 API 中所说

以人类可读的文本格式返回属性的值。

如下图

mainWindow.addComponent(new Label(new Property() {
        public Object getValue() {
            return "Wellcome to Vaadin!";
        }

        public void setValue(Object newValue) throws ReadOnlyException, ConversionException {
            throw new ReadOnlyException();
        }

        public Class<?> getType() {
            return String.class;
        }

        public boolean isReadOnly() {
            return true;
        }

        public void setReadOnly(boolean newStatus) {
            throw new UnsupportedOperationException();
        }

        @Override
        public String toString() {
            return (String) getValue();
        }
    }));

getType 方法告诉您此 Property 存储的类型,仅此而已。例如,它可以是任何东西,甚至是 Account 类。组件本身显示的值始终来自 toString 方法

问候,

于 2010-02-23T01:34:29.520 回答