Vaadin と DataModel。ラベル フィールドで使用される Property DataModel 実装によって格納されている値を取得するにはどうすればよいですか?ヴァーディン

StackOverflow https://stackoverflow.com/questions/2313174

質問

これは単なるテストアプリケーションです

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 がプレーン String で出力を表示する場合、Object getType() を実装する理由はないと思いますが、そうしないでください。

よろしく、

役に立ちましたか?

解決

その理由が分かったのですが、

人間が判読できるテキスト形式で値を表示するために使用される方法は、次のとおりです。 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 メソッドから派生します.

よろしく、

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top