例如,在 Vaadin 8 中,您只需执行以下操作即可按屏幕上显示的顺序获取列的列表。
String columnOrderPreference = ((List<Grid.Column>)grid.getColumns()).stream()
.map(Grid.Column::getId)
.collect(Collectors.joining(VALUE_SEPARATOR));
Run Code Online (Sandbox Code Playgroud)
这特别方便,因为您可以保存该字符串,然后调用:
grid.setColumnOrder(columnOrderPreference.split(VALUE_SEPARATOR));
Run Code Online (Sandbox Code Playgroud)
在 Vaadin 14 中(忽略getId()现在应该使用的getKey()),这不再可能,因为getColumns()列表现在总是按照它们添加的顺序而不是它们的排序顺序返回。您仍然可以调用setColumnOrder(...)(使用不同的参数 - list of grid.getColumnByKey(columnKey)),但我无法弄清楚如何按照显示的顺序获取列列表。
这对于尝试保存用户返回同一页面(使用网格)时设置/更改的列顺序特别有用。
我有一个带有 Spring Boot 和 Spring Security 配置的 Vaadin 14.0.10 应用程序。我正在尝试将其更新到 14.5.4,但更新后,当我尝试加载应用程序时,出现空白页面。服务器日志上没有错误,但在浏览器控制台上,显示两个错误:
Refused to execute script from 'http://localhost:8080/login' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.
Run Code Online (Sandbox Code Playgroud)
和
login:1 Failed to load module script: The server responded with a non-JavaScript MIME type of "text/html". Strict MIME type checking is enforced for module scripts per HTML spec.
Run Code Online (Sandbox Code Playgroud)
查看“网络”选项卡,似乎两者webcomponents-loader.js都vaadin-bundle-*.cache.js获得状态 302“脚本/重定向”。这两个文件都是从下面提供的/VAADIN/build。
起初我认为这可能是 Spring Security 配置问题,但在我的WebSecurityConfigurerAdapter实现中,我有:
Refused to execute script from …Run Code Online (Sandbox Code Playgroud) 我想将按钮与文本字段对齐在同一行上。项目对齐已设置为Alignment.CENTER,但正如您从图像中看到的,由于文本字段顶部的标签,它们的垂直中心较低。
HorizontalLayout horizontalLayout = new HorizontalLayout();
horizontalLayout.setAlignItems(FlexComponent.Alignment.CENTER);
Div div = new Div(buttonAddPriceRange);
horizontalLayout.add(spanneVon, spanneBis, div);
Run Code Online (Sandbox Code Playgroud)
我有一个现有的 Vaadin 7 项目,它曾经可以正常工作。现在我正在尝试编译它,widgetset 编译失败,
[ERROR] Hint: Check that your module inherits 'com.google.gwt.core.Core' either directly or indirectly
原因可能是什么?
我正在尝试按照我在此处找到的说明将 Vaadin 项目连接到 MySQL 数据库:https: //dzone.com/articles/how-to-connect-a-mysql-database-to-a-vaadin-applic
我下载了文章中准备好的项目(也可以在这里找到: https: //github.com/Liskokuningas/databasemysqlexample)
然后,我在 MySQL Workbench 中创建了虚拟数据架构,并尝试通过 Windows 10 命令行运行该应用程序,如下所示:
mvn clean install -U /*all is fine here, build is successful*/
然后mvn spring-boot:run
然后我得到一个错误:
Followed by:
java.lang.RuntimeException: Unable to initialize com.vaadin.flow.spring.VaadinServletContextInitializer$VaadinAppShellContextListener
at com.vaadin.flow.spring.VaadinServletContextInitializer$FailFastServletContextListener.contextInitialized(VaadinServletContextInitializer.java:192) ~[vaadin-spring-16.0.1.jar:na]
at com.vaadin.flow.spring.VaadinServletContextInitializer$CompositeServletContextListener.lambda$contextInitialized$0(VaadinServletContextInitializer.java:209) ~[vaadin-spring-16.0.1.jar:na]
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) ~[na:na]
at com.vaadin.flow.spring.VaadinServletContextInitializer$CompositeServletContextListener.contextInitialized(VaadinServletContextInitializer.java:209) ~[vaadin-spring-16.0.1.jar:na]
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4680) ~[tomcat-embed-core-9.0.22.jar:9.0.22]
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5143) ~[tomcat-embed-core-9.0.22.jar:9.0.22]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-9.0.22.jar:9.0.22]
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384) ~[tomcat-embed-core-9.0.22.jar:9.0.22]
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374) ~[tomcat-embed-core-9.0.22.jar:9.0.22]
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) ~[tomcat-embed-core-9.0.22.jar:9.0.22]
at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140) ~[na:na]
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909) ~[tomcat-embed-core-9.0.22.jar:9.0.22]
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:841) …Run Code Online (Sandbox Code Playgroud) 我当前的Vaadin 8项目遇到的问题是,我有一个 java 入口类,它使用一些静态和动态上下文启动Tomcat的 2 个实例。
在Vaadin 8中,我曾经在 Eclipse 上静态链接所有库,因此之前我没有使用 pom.xml 文件,但为了更新当前工作流程,我在 pom.xml 文件上定义了所有这些库。现在我正在使用 pom.xml 文件,我意识到整个前端是通过vaadin-maven-plugin启动的,我真的不知道如何使用嵌入式Tomcat服务器来工作前端( Fusion 和 Flow ) ,但是没有SpringBoot。
我认为 vaadin 团队希望社区越来越多地使用SpringBoot 。
那么如何集成Vaadin 20(Fusion 和 Flow)+ 嵌入式Tomcat服务器但没有SpringBoot呢?或者您是否建议也迁移到SpringBoot?我看到了Vaadin 20 Fusion部分所需的许多注释,并且仅适用于SpringBoot。
有没有办法动态改变 lumo 原色:
html {
--lumo-primary-text-color: hsl(214, 35%, 15%);
--lumo-primary-color-50pct: rgba(140, 236, 0, 0.5);
--lumo-primary-color-10pct: rgba(140, 236, 0, 0.1);
--lumo-primary-color: #8CEC00;
--lumo-primary-contrast-color: hsl(214, 35%, 15%);
}
Run Code Online (Sandbox Code Playgroud)
提前致谢!
最好的问候, 托马斯
我有一个简单的 LitElement 类,我想用一些内部 CSS 设置样式:
import {LitElement, html, css, customElement, property} from 'lit-element';
@customElement('address-card')
export class AddressCard extends LitElement {
@property()
streetAddress?: string;
@property()
postalCode?: string;
@property()
city?: string;
static get styles() {
return css`
.address { border: 1px dashed gray; }
`;
}
render() {
return html`
<div class="address">
<div>${this.streetAddress}</div>
<div>${this.postalCode} ${this.city}</div>
</div>
`;
// Remove this method to render the contents of this view inside Shadow DOM
createRenderRoot() {
return this;
}
}
Run Code Online (Sandbox Code Playgroud)
该static get styles()方法应该允许我向组件添加样式,但我在那里添加的任何内容似乎都没有得到应用。甚至 …
我有这样的瓦丁观点:
@Route()
@JavaScript(value="scripts/print.js")
public class PrintableView extends BaseView {
@Override
public void setParameter(BeforeEvent event, @OptionalParameter String parameter) {
super.setParameter(event, parameter);
}
@Override
protected void onAttach(AttachEvent attachEvent) {
UI.getCurrent().getPage().executeJs("printWhenLoaded($0);",".layout");
}
}
Run Code Online (Sandbox Code Playgroud)
以及 JavaScript 导入:
function printWhenLoaded(selector) {
setTimeout(function () {
var e = document.querySelector(selector);
if(e && e.innerHTML.length) {
window.print();
window.close();
}
else printWhenLoaded(selector)
}, 200)
};
//printWhenLoaded('.layout');
Run Code Online (Sandbox Code Playgroud)
导入成功加载(最终),因为当我取消注释最后一行时,它起作用了。但是,当尝试从 onAttach 方法调用它时,我在浏览器控制台中看到一个错误,指出“printWhenLoaded”未定义。
看来在 onAttach 时,JS 文件实际上还没有被浏览器加载。
如何将 JavaScript 库文件包含到 Vaadin 14 中的 LitElement 模板组件中?我想加载一个文件并在组件附加到组件层次结构时自动执行它。
vaadin ×10
vaadin-flow ×5
spring-boot ×2
tomcat ×2
css ×1
hilla ×1
java ×1
lit-element ×1
mysql ×1
vaadin14 ×1
vaadin20 ×1
vaadin7 ×1