1

単純なテストアプリケーションです

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

代わりは。しかし、プロパティDataModelが舞台裏でどのように機能するかを確認するために、プロパティの実装を追加しました。しかし、出力を見る代わりに

DataModelの例

私は得る

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

なぜ ???

そして、プロパティインターフェイスで定義されたObject getType()メソッドの本当の目的は何ですか?HTMLがその出力をプレーンな文字列で表示する場合、オブジェクト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メソッドは、このプロパティによって格納されているタイプを通知します。他には何も通知しません。たとえば、Accountクラスなど、何でもかまいません。コンポーネント自体によって示される値は、常にtoStringメソッドから派生します。

よろしく、

于 2010-02-23T01:34:29.520 に答える