gpt4 book ai didi

java - Vaadin(流): Navigating to destination with a shared object

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:05:20 28 4
gpt4 key购买 nike

问题:

我目前有一个显示 SomeModel 类型内容的网格。当我单击该 Grid 的条目时,我想导航到一个将对象作为其输入以显示条目内容的 View 。

实现:

为了实现这种行为,我创建了一个 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 不支持这种行为,即使它的语法非常好。


问题:

您知道导航时传递对象的另一种方法吗?还是我错过了官方文档的某个部分 documentation

提前致谢

最佳答案

键值集合

正如关于 other Answer 的评论中所讨论的那样,如果您不希望将 ID 值公开为 URL 的一部分,则可以使用 Vaadin 提供的键值集合在幕后工作。

Vaadin 实际上在三个级别的范围内提供键值集合:

  • 上下文
    运行时的整个网络应用
  • session
    每个用户
  • UI
    每个网络浏览器窗口/标签,因为 Vaadin 支持多窗口网络应用

通过 getAttributesetAttribute 方法,可在 VaadinContext 上获取应用范围的键值集合。

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

通过 getAttributesetAttribute 方法,可以在 VaadinSession 上获取每个用户的键值集合。

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

➥ 每个浏览器窗口/选项卡集合(您在本问题中想要满足您的需求)并不是那么容易获得。你必须经历一个间接的步骤。关于ComponentUtil类,调用 setDatagetData 方法。除了passing your key and your value, pass the current UI object .

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

请投票给我ticket # 6287 ,在 UI 类上添加 setAttribute/getAttribute 方法的功能请求,以匹配 VaadinSessionVaadinContext

关于java - Vaadin(流): Navigating to destination with a shared object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54442697/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com