以下代码在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)
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 …
我目前尝试设置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)
为此,我尝试在UI.getCurrent().getPage().setTitle("demo title")
期间致电afterNavigation
。不幸的是,这不适用于初始导航(也没有添加attachListener
)。
我也尝试使用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)
HasDynamicTitle
只有在实现类也定义了 …我需要获取当前服务器名称以及存储在URI
. 在 Vaadin 8 中,可以通过Page
调用如下内容来访问它:
URI uri = Page.getCurrent().getLocation();
Run Code Online (Sandbox Code Playgroud)
据我所知也没有Router
。
我如何获得URI
?
先感谢您。
我目前有一个显示类型内容的网格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 不支持这种行为,尽管它的语法非常好。
您是否知道在导航时传递对象的另一种方法,或者我是否错过了官方文档的某个部分?
先感谢您
Vaadin 文档声明它支持Select
使用Java 调用的组件.
你怎么访问它?我找不到任何相应的课程.甚至它的安装部分都没有提到它.
vaadin-flow ×5
vaadin ×4
java ×2
eclipse ×1
html-select ×1
html-title ×1
java-11 ×1
java-8 ×1
navigation ×1
uri ×1
vaadin12 ×1