Vaadin(フロー):ナビゲーション共有オブジェクトと宛先へ

ヘリットSedlaczek:

問題:

私は現在のタイプのコンテンツを表示するグリッドを持っていますSomeModel私はそれのエントリをクリックするとGrid、私はエントリの内容を表示するためにその入力としてオブジェクトを受け取りビューに移動したいと思います。

実装:

私が作成したこの動作achiveするにはDetailLayout、このように:

public DetailLayout extends FlexLayout implements HasUrlParameter<SomeModel>{
    /* skipped some details */
    @Override
    public void setParameter(BeforeEvent event, Host parameter) {
        /* This is where I expected to be able to handle the object */
    }
}

内からはGrid私のようにナビゲートしてみました:

addSelectionListener((event) -> {
    event.getFirstSelectedItem().ifPresent(somemodel -> {
        getUI().ifPresent(ui -> {
            ui.navigate(DetailLayout.class, somemodel);
        });
    });
});

しかし残念ながら、この動作は、その構文は完全に罰金であってもカントーVaadinでサポートされていません。


質問:

あなたは、ナビゲーションしながら、オブジェクトを渡すために別の方法を知っていますか私は、公式ドキュメントの特定の部分逃したのマニュアルを参照して

前もって感謝します

バジルボーク:

キー値のコレクション

上のコメントで述べたように、他の回答には、URL、Vaadinが提供するキーと値のコレクションを使用して、舞台裏で、その後の作業の一環として、ID値を公開したくない場合。

Vaadinは、実際にはスコープの3つのレベルでキーと値のコレクションを提供します。

  • コンテキスト
    実行時にあなたの全体のウェブアプリ
  • セッションの
    各ユーザー
  • UIは、
    各Webブラウザのウィンドウ/タブ、Vaadinは、マルチウィンドウのWebアプリケーションをサポートして

アプリ全体のキーと値のコレクションはで提供されていますVaadinContext、経由getAttributesetAttribute方法。

VaadinService.getCurrent().getContext().setAttribute( key , value ) ;

ユーザごとのキーと値のコレクションはで提供されていますVaadinSession、経由getAttributesetAttribute方法。

VaadinSession.getCurrent().setAttribute( key , value ) ;

➥ごとのブラウザウィンドウ/タブのコレクションは、(あなたがこの質問では、ニーズのために何をしたい)それほど容易に利用可能ではありません。あなたは間接的なステップを通過する必要があります。上のComponentUtilクラス、コールsetDatagetData方法。加えて、あなたのキーと値を渡して、現在のパスUIのオブジェクトを

Component c = UI.getCurrent() ;
String key = "com.example.acmeapp.selectedProductId" ;
Object value = productId ;
ComponentUtil.setData( c , key , value ) ;

私のためにしてください投票チケット#6287、追加する機能要求setAttribute/ getAttribute上のメソッドUI、クラスのそれと一致するようにVaadinSessionしてVaadinContext

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=183963&siteId=1
おすすめ