代码之家  ›  专栏  ›  技术社区  ›  Arthur Ronald

Vaadin和数据模型。如何获取标签字段使用的属性数据模型实现所存储的值????瓦丁

  •  0
  • Arthur Ronald  · 技术社区  · 16 年前

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

    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"));
    

    相反。但是 为了了解属性数据模型如何在幕后工作 ,我添加了一个属性实现。但没有看到产出

    数据模型示例

    我得到

    br.com.elf.ui.indexapplication$1@63A721

    为什么?你说什么?

    在属性接口中定义的object gettype()方法的真正用途是什么????如果HTML以纯字符串显示其输出,那么我认为没有理由实现一个getType()对象,不是吗????

    当做,

    1 回复  |  直到 16 年前
        1
  •  2
  •   Arthur Ronald    16 年前

    我发现了原因,

    用于以人类可编校文本格式显示其值的方法是 弦线 . 如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方法告诉你 此属性存储的类型 ,没有别的了。例如,它可以是任何东西,甚至是帐户类。组件本身显示的值 总是从ToString方法派生 .

    当做,

    推荐文章