以下代码在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 …
我是Java开发人员,我将开始新项目.我的客户端开发技能非常有限,这就是为什么我真的很喜欢Vaadin框架的想法.我已经评估了Vaadin 10 Bakery App Starter应用程序https://vaadin.com/start#vaadin10,并且为了使这个应用程序启动并运行而自定义的HTML/CSS/JavaScript数量让我感到惊讶.现在我真的很困惑,不明白它如何简化开发人员的生活.
我现在可以作为项目启动器使用的唯一应用程序是着名的QuickTickets Dashboard https://demo.vaadin.com/dashboard/,其中所有UI都是纯Java实现的.目前最大的问题是这个应用程序是在Vaadin 8上实现的,我无法为Vaadin 10找到它的版本.你有类似Vaadin 10的东西吗?如果不是,您是否有从Vaadin 8到Vaadin 10的迁移指南,我可以使用它来尝试将此应用程序移植到Vaadin 10?
我目前尝试设置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只有在实现类也定义了 …在Vaadin 10-14中,应该将静态文件(例如CSS,JavaScript和Polymer模板)放在哪里?静态文件(例如图像)如何?
另外,如何在Vaadin中导入这些文件?带有npm的Vaadin 14和带有凉亭的Vaadin 10-13之间有区别吗?
你如何在 Vaadin Flow 中包含你自己的图标?你是否从 Vaadin Icons制作了一个像这样的 HTML 文件并通过
@HtmlImport("frontend://path/to/your/icons.html")
Run Code Online (Sandbox Code Playgroud)
到目前为止,我没有找到任何文档。所以我想这是一种可能性?
我有一个LoginView,我基本上从面包店入门项目复制.
当我运行面包店应用程序并尝试使用错误的凭据登录时,会出现另一个带有错误消息的div.
但是,此错误消息div不会出现在我的视图中.因为我已经适应了模板,我们的企业设计的,但我记得,这个问题已经存在的两个文件时LoginView.java,并login-view.html仍然从面包房应用程序的精确副本.我仔细检查过.error不只是被我自己的css隐藏 - 在DOM中不存在div.error.
访问时调试LoginView /login?error(访问login?error=true是相同的)表明它无法识别任何queryParameters! - >为什么?
我的(Spring)安全配置在登录方面也是一样的:
.and()
.formLogin()
.loginPage(("/login")).permitAll()
.loginProcessingUrl("/login")
.failureUrl("/login?error")
Run Code Online (Sandbox Code Playgroud)
编辑:根据评论中的要求,我将添加模板的相关部分.但是,错误是100%不在模板中 - 正如我在调试中看到的那样,错误发生LoginView.java在afterNavigation方法中.
<dom-module id="login-view">
<template>
<style include="shared-styles">
.....
</style>
.....
<template is="dom-if" if="[[error]]">
<div class="error">
<iron-icon icon="vaadin:exclamation-circle-o" class="error__icon"></iron-icon>
<p class="error__text">
Der Benutzername und/oder das Passwort stimmt nicht. Bitte überprüfe deine Angaben und versuche es erneut.
</p>
</div>
</template>
....
</template>
<script>
class LoginView extends Polymer.GestureEventListeners(Polymer.Element) {
static get is() {
return 'login-view'; …Run Code Online (Sandbox Code Playgroud) 我需要获取当前服务器名称以及存储在URI. 在 Vaadin 8 中,可以通过Page调用如下内容来访问它:
URI uri = Page.getCurrent().getLocation();
Run Code Online (Sandbox Code Playgroud)
据我所知也没有Router。
我如何获得URI?
先感谢您。
对于 Vaadin 14.1.23 TextFields,我想在视觉上区分红色错误消息(例如“此值太大。”)和黄色警告(例如“系统会将您的输入四舍五入到两位小数。”)。也可以选择蓝色信息消息。
因此,我创建了一个带有验证器的 TextField,如本例所示(https://vaadin.com/components/vaadin-text-field/java-examples/validation):当您在标签为“Min 2”的字段中输入“1”时个字符”,然后该字段变为红色并显示错误:“最少 2 个字符”。
显示这样的(黄色)警告消息怎么样?
我尝试的是这样的:在验证器的 apply 方法中,我创建了一个带有 ErrorLevel WARNING 的验证结果,如下所示:
ValidationResult.create("System will round the decimals.", ErrorLevel.WARNING);
Run Code Online (Sandbox Code Playgroud)
但 Vaadin 仍然生成了一个带有 part="error-message" 的 div:
<div part="error-message" aria-live="assertive" aria-hidden="false" id="my-field-error-44">System will round your input to two decimals.</div>
Run Code Online (Sandbox Code Playgroud) 我正在将 Vaadin Springboot/Gradle 应用程序从 Vaadin 14.5.1 迁移到 14.6.1。我从start.vaadin.com的新生成的应用程序的 themes 文件夹中复制了新文件,特别是 frontend/themes/my-app/styles.css
@import url('lumo-css-framework/all-classes.css');
Run Code Online (Sandbox Code Playgroud)
运行vaadinBuildFrontend任务时,我收到以下错误(在其他消息中):
ERROR in ./themes/my-app/styles.css
Module build failed (from ../node_modules/css-loader/dist/cjs.js):
Error: Can't resolve 'lumo-css-framework/all-classes.css' in '/Users/<..>/my-app/frontend/themes/my-app
Run Code Online (Sandbox Code Playgroud)
所有构建依赖项似乎与示例 maven 项目中的相同。在构建前端之前,所有生成的文件都已被删除。
比较所生成的文件后,我发现样品Maven项目包含"lumo-css-framework": "^3.0.11"在生成的package.json,而gradle这个项目不包含这一点。
环境:
我在设置中缺少什么?
序言:我是一名高级Vaadin开发人员(我使用过6,7,现在我的所有项目都迁移到了Vaadin 8).
我开始研究Vaadin 10/Flow,但我发现自己处于一些热水中.
我实际上正在努力的是"项目"本身.我越深入,我越觉得这个框架正在转变为基于css/html的框架,这需要比java更多的css/html知识.我的意思是,如果你不完全知道css和html如何工作,你就不能再轻松地使用这个框架了.
问题是,我不知道我是否完全忽略了这一点,我正在失去一杯水,或者如果那真的是一个完全不同的框架.这是我要求你提出意见的地方,以及一些对抗.
我发现了一些非常好的东西,比如@Router和所有新的导航范例和新的Mobile First组件,但是在示例中我真的找不到一种快速的方法来构建一个漂亮的外观和感觉布局而无需使用css和html.
使用Vaadin 8轻松完成任务对我来说很难理解......就像模板一样:使用Vaadin 10 Designer真的很奇怪.
我希望我只是错过了这一点,你们中的一些人可以帮助我清除我的想法.