在Vaadin Flow中,不存在本质上是可滚动布局的组件。在Vaadin 8中,这是由专家小组完成的。
有什么方法可以在Vaadin Flow中实现可滚动组件?
我想验证用户是否已登录以实现它,我在 vaadin 13.0.2 中找到了名为 VaadinServiceInitListener 的东西,此类用于侦听所有 UI 的 BeforeEnter 事件,以便在允许之前检查用户是否已登录进入任意页面。
我通过赞赏实现的登录功能和 VaadinServiceInitListener 创建了一个带有 app-layout-addon 的 vaadin 13.0.2 项目,以检查用户是否登录。
public class AAACATInitListener implements VaadinServiceInitListener {
private static final long serialVersionUID = 1L;
private static InAppSessionContextImpl appContextImpl;
@Override
public void serviceInit(ServiceInitEvent event) {
System.out.println("in service init event");
event.getSource().addUIInitListener(new UIInitListener() {
private static final long serialVersionUID = 1L;
@Override
public void uiInit(UIInitEvent event) {
event.getUI().addBeforeEnterListener(new BeforeEnterListener() {
private static final long serialVersionUID = 1L;
@Override
public void beforeEnter(BeforeEnterEvent event) {
appContextImpl = (InAppSessionContextImpl)VaadinSession.getCurrent().getAttribute("context"); …Run Code Online (Sandbox Code Playgroud) 我想复制到 vaadin 14 中的剪贴板组件,否则我该如何准备?
我想在 Vaadin 中编写一个按钮来复制特定 Vaadin 小部件(如 TextField)的文本内容,将该文本放置在操作系统的剪贴板上,以便用户稍后可以将该文本粘贴到其他地方,可能是另一个应用程序中
在 Vaadin 14 中,Dialog通过px( CSS virtual "pixels" )指定宽度和高度时,小部件会正确打开。
Dialog dialog = new Dialog();
dialog.setCloseOnEsc( true );
dialog.setCloseOnOutsideClick( true );
dialog.add( new Label( "whatever" ) );
dialog.setWidth( "500px" ); // width
dialog.setHeight( "700px" ); // height
Run Code Online (Sandbox Code Playgroud)
不幸的是,将其更改500px为80%:
dialog.setWidth( "80%" ); // width as percentage (%)
dialog.setHeight( "700px" ); // height
Run Code Online (Sandbox Code Playgroud)
我希望对话框现在占据浏览器的大部分窗口宽度。我的看法正好相反。结果对话框的宽度大约只有窗口的三分之一,而不是 80%。并且宽度是固定的,不会随着用户调整浏览器窗口的大小而改变。
? 如何让 aDialog填充大部分但不是全部浏览器窗口,并随着用户增长/缩小窗口的宽度/高度而动态调整大小?
这是一个完整的工作示例应用程序,它基于 Vaadin.com 站点提供的“普通 Java Servlet”入门项目。
package work.basil.example.dialog_by_percent;
import com.vaadin.flow.component.button.Button; …Run Code Online (Sandbox Code Playgroud) 该https://start.vaadin.com页面创建18版本或19(发行前)的新Vaadin流项目。但是生成的项目需要 Spring Boot。
我不想要春天。我不想要 Spring Boot。两者都解决了我没有的问题。两者都增加了我不想要的复杂性。
有没有办法在没有Spring 的情况下使用 Vaadin 18 或 19 ,只使用普通的 Servlet 技术?
是否有任何适用于 Vaadin 18 或 19 但没有 Spring 和 Spring Boot 的 Maven 原型?以前,我们有 Maven 原型vaadin-archetype-application。但该原型仅适用于 Vaadin 16。不适用于 Vaadin 17 和 18。
作为一种解决方法,是否有某种方法可以获取在https://start.vaadin.com 上生成的基于 Spring Boot 的项目,然后删除所有与 Spring 相关的部分?或者这是不可行的?
基本上,这个问题与这个问题相同,使用没有 Spring/CDI 的普通 Java Servlet 创建一个新的 Vaadin Flow 16/17 项目,但适用于 Vaadin 18/19 而不是 16/17。
有没有办法动态改变 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)
提前致谢!
最好的问候, 托马斯
从 Vaadin 14.5 升级到 14.6 后,我遇到了包含指向内容的 URL 的 CSS 问题。
例如,以下 CSS 不再有效:
:host([part="my-part"]) [part="reveal-button"]::before {
content: url("../images/my-image.svg");
}
Run Code Online (Sandbox Code Playgroud)
运行 Vaadin Maven 插件的构建前端目标时,它无法“编译”并出现以下错误:
ERROR in ../node_modules/@vaadin/flow-frontend/styles/components/my-component.css
Module build failed (from ../node_modules/css-loader/dist/cjs.js):
Error: Can't resolve '../images/my-image.svg' in '<Project Path>\node_modules\@vaadin\flow-frontend\styles\components'
Run Code Online (Sandbox Code Playgroud)
如果我尝试运行该项目,浏览器中会出现同样的错误。此 CSS 在所有先前版本的 Vaadin 14 中运行良好。
有没有人遇到过类似的事情,或者对可能导致这种情况的变化有什么想法?
我创建了一个具有树结构的上下文菜单(添加了菜单项,然后在这些菜单项中添加了复选框作为子菜单项)。这在手动添加/删除项目方面工作得很好。但是,当涉及到以编程方式重置项目时,一般组件与特定组件(在本例中为复选框)之间存在冲突。
Component comp = contextMenu.getItems().get(x).getSubMenu().getItems().get(y);
if (comp instanceof Checkbox) {
((Checkbox) comp).setValue(false);
}
Run Code Online (Sandbox Code Playgroud)
请注意, comp实际上不是Checkbox 的实例;而是作为 com.vaadin.flow.component.contextmenu.MenuItem 返回,并且该项目不能转换为复选框。所以问题是,我如何取消选中给定的复选框?
例如,我有一个网格,我让用户使用 Vaadin 8 为某些数据定义颜色,我也想在 Vaadin 14 / Flow 中提供它。
在 Vaadin 8 中,我做了(对于每种样式/数据类型):
Page.getCurrent().getStyles()
.add(".MyCustomTheme .v-grid-cell." + cssName + " { background-color:" + userSelectedColor + "; }");
Run Code Online (Sandbox Code Playgroud)
然后在网格代码中我会这样做:
addColumn(myColumn).setStyleGenerator(cssName);
Run Code Online (Sandbox Code Playgroud)
在 Vaadin 14 / Flow 我有:
addColumn(myColumn).setClassNameGenerator(cssName);
Run Code Online (Sandbox Code Playgroud)
但是我似乎无法弄清楚如何以编程方式更改 cssName 的 css 值。本质上,我如何在 Java 代码中注入我的 css 的第一部分?
只是补充一下,我无法做任何事情,如下所示:https : //vaadin.com/docs/v14/flow/element-api/tutorial-dynamic-styling当我尝试这样做时,grid.getElement().getStyle().set(...)这将适用于整个表而不是比行。
vaadin-flow ×10
vaadin ×9
vaadin14 ×2
checkbox ×1
contextmenu ×1
css ×1
dialog ×1
java ×1
maven ×1
scrollview ×1
vaadin-grid ×1