小编Ger*_*zek的帖子

Java Casting:Java 11抛出LambdaConversionException,而1.8则没有

以下代码在Java 1.8 VM中可以正常运行,但是LambdaConversionException在Java 11 VM中执行时会产生一个。区别在哪里,为什么表现得如此?


码:

public void addSomeListener(Component comp){
    if(comp instanceof HasValue) {
        ((HasValue<?,?>) comp).addValueChangeListener(evt -> {
            //do sth with evt
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

HasValue Javadoc

异常(仅V11):

Caused by: java.lang.invoke.LambdaConversionException: Type mismatch
for instantiated parameter 0: class java.lang.Object is not a subtype
of interface com.vaadin.flow.component.HasValue$ValueChangeEvent
    at java.base/java.lang.invoke.AbstractValidatingLambdaMetafactory.checkDescriptor(AbstractValidatingLambdaMetafactory.java:308)
    at java.base/java.lang.invoke.AbstractValidatingLambdaMetafactory.validateMetafactoryArgs(AbstractValidatingLambdaMetafactory.java:294)
    at java.base/java.lang.invoke.LambdaMetafactory.altMetafactory(LambdaMetafactory.java:503)
    at java.base/java.lang.invoke.BootstrapMethodInvoker.invoke(BootstrapMethodInvoker.java:138)
    ... 73 more
Run Code Online (Sandbox Code Playgroud)

解决方法:

ValueChangeListener<ValueChangeEvent<?>> listener = evt -> {
    // do sth with evt
};
((HasValue<?,?>) comp).addValueChangeListener(listener);
Run Code Online (Sandbox Code Playgroud)

系统:
操作系统:Windows 10
IDE:Eclipse 2018-12(4.10.0)
Java(编译):ecj …

java eclipse java-8 java-11 vaadin-flow

55
推荐指数
1
解决办法
1942
查看次数

Vaadin Flow:设置标题

我目前尝试设置title页面的。


情境

public class A extends FlexLayout implements RouterLayout {}

@Route(value = "b", layout = A.class)
public class B extends FlexLayout{}
@Route(value = "c", layout = A.class)
public class C extends FlexLayout{}
Run Code Online (Sandbox Code Playgroud)

尝试次数

  1. 为此,我尝试在UI.getCurrent().getPage().setTitle("demo title")期间致电afterNavigation。不幸的是,这不适用于初始导航(也没有添加attachListener)。

  2. 我也尝试使用PageConfigurator最外层的进行配置,RouterLayout如下所示:

public class A extends FlexLayout implements RouterLayout {}

@Route(value = "b", layout = A.class)
public class B extends FlexLayout{}
@Route(value = "c", layout = A.class)
public class C extends FlexLayout{}
Run Code Online (Sandbox Code Playgroud)
  1. HasDynamicTitle只有在实现类也定义了 …

html-title vaadin vaadin-flow

9
推荐指数
1
解决办法
255
查看次数

Vaadin Flow:如何获取当前 URI

我需要获取当前服务器名称以及存储在URI. 在 Vaadin 8 中,可以通过Page调用如下内容来访问它:

URI uri = Page.getCurrent().getLocation();
Run Code Online (Sandbox Code Playgroud)

Flow 中Page不包含此类信息: 在此输入图像描述

据我所知也没有Router


我如何获得URI

先感谢您。

uri vaadin vaadin-flow vaadin12

7
推荐指数
1
解决办法
4526
查看次数

Vaadin (Flow):使用共享对象导航到目的地

问题:

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

执行:

为了实现这种行为,我创建了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 */
    }
}
Run Code Online (Sandbox Code Playgroud)

从内部Grid我尝试像这样导航:

addSelectionListener((event) -> {
    event.getFirstSelectedItem().ifPresent(somemodel -> {
        getUI().ifPresent(ui -> {
            ui.navigate(DetailLayout.class, somemodel);
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

但不幸的是 Vaadin 不支持这种行为,尽管它的语法非常好。


问题:

您是否知道在导航时传递对象的另一种方法,或者我是否错过了官方文档的某个部分?

先感谢您

java navigation vaadin vaadin-flow

5
推荐指数
2
解决办法
2323
查看次数

Vaadin Flow:如何使用从Java中选择

Vaadin 文档声明它支持Select使用Java 调用的组件.

你怎么访问它?我找不到任何相应的课程.甚至它的安装部分都没有提到它.

html-select vaadin vaadin-flow

1
推荐指数
1
解决办法
101
查看次数