小编Ann*_*nen的帖子

当 CSS 用于列宽时,Vaadin 8 Grid 滚动条的行为不稳定

我的 Vaadin 8 应用程序中有一个网格,有时网格的滚动条在不需要时出现或在不需要时消失。他们甚至可能陷入循环。我的网格有五列,我只使用 Vaadin 8 附带的内置渲染器。

我使用 CSS 将第一列的列宽设置为 30%。如果我从主题中删除该行,则不会出现问题,但我需要它。我怎样才能让它工作?

css java grid vaadin vaadin8

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

Vaadin Spring-Boot 应用程序在生产模式下作为 JAR 运行时不会渲染 CSS

有什么想法为什么在生产环境中发布新的 Vaadin / Spring-Boot 应用程序时,Vaadin 不会在前端目录中渲染自定义 css,尽管它在调试模式下会渲染?

该应用程序是为生产而构建的,如下所示:

mvn install -Pproduction
Run Code Online (Sandbox Code Playgroud)

然后运行生成的应用程序,如下所示:

java --enable-preview -jar target\app-1.0-SNAPSHOT.jar
Run Code Online (Sandbox Code Playgroud)

通过 JAR 文件方法运行时,CSS 未在浏览器中正确应用。其他一切都很好。

当应用程序运行时如下:

mvn spring-boot:run 
Run Code Online (Sandbox Code Playgroud)

所有页面均正确呈现。CSS 已正确加载。

在LoginView类中,CSS的导入如下:

@CssImport(value = "./views/login/login-view.css", themeFor = "vaadin-login-overlay-wrapper")
Run Code Online (Sandbox Code Playgroud)

login-view.css 文件位于 [项目目录]\frontend\views\login-view.css

当运行 mvn spring-boot:run 时,CSS 文件被正确拾取,但是,当使用 JAR 方法运行时,则不然。我不确定这是否是设计使然,但我没有看到 css 文件存储在生成的 JAR 文件中的任何位置。

为了缓解这种情况,我尝试将前端文件放在 [project dir]\src\main\resources\META-INF\frontend 中,而不是默认位置 [project dir]\frontend 中,因为我在某处读到 CssImport 在 resources\ 内部查找通过 JAR 运行时的 META-INF\frontend 文件夹。当我将文件放在这个位置时,CSS 文件会合并到 JAR 中,并且可以从 http://localhost:8080/frontend/views/login/login-view.css 进行访问,但是可惜 LoginView 页面似乎仍然不存在渲染 CSS。

该应用程序最初是使用 Vaadin 应用程序构建器构建的。pom.xml 与默认的大致相同。我正在运行 Vaadin 19.0.7。提前致谢

vaadin spring-boot vaadin-flow

6
推荐指数
0
解决办法
427
查看次数

使用 Vaadin LitRenderer 的动态 HTML

使用 Vaadin 22+

我正在尝试使用 LitRenderer 在 Vaadin 网格中显示一些动态 html。

以前可以使用现已弃用的 TemplateRenderer使用此 hack 来实现

var templateRenderer = TemplateRenderer.<Event>of("""
<div>
  <ul inner-h-t-m-l="[[item.html]]">
  
  </ul>
</div>
""").withProperty("html", item -> {
  String listItems = "";
  for (EventItem eventItem : item.getEventItems()) {
    listItems += "<li>"+eventItem.getValue()+"</li>";
  }
  return listItems;
});

/*
  Produces html like
  <div>
    <ul>
      <li>Thing 1</li>
      <li>Thing 3</li>
      <li>Thing 845</li>
    </ul>
  </div>
  */
Run Code Online (Sandbox Code Playgroud)

这里重要的部分是设置包装元素的innerHTML。

有没有办法使用 LitRenderer 来做到这一点?我发现 Lit-Template 本身就有unsafeHTML 指令来实现这种目的。但我没有运气尝试让它或其他方法发挥作用。

谢谢

更新:2021.3.2 修复示例代码

vaadin vaadin-grid vaadin-flow lit vaadin22

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

Vaadin:标签以一种非常奇怪的方式显示 - 这是故意的吗?

我真的很困惑 Vaadin 的 Tabs/Tab 组件:

我创建了一个包含几个选项卡的页面,本质上是这样的:

Tabs tabs = new Tabs();
Tab tab1 = new Tab("Label 1");
tab1.add(<some components (labels and entry fields) here>);
tabs.add(tab1);

Tab tab2 = new Tab("Label 2");
tab2.add(<some components (labels and entry fields) here>);
tabs.add(tab2);

Tab tab3 = new Tab("Label 3");
tab3.add(<some components (labels and entry fields) here>);
tabs.add(tab3);

mainPage.add(tabs)
Run Code Online (Sandbox Code Playgroud)

我期望得到的渲染与此类似(当然以某些样式为模):

 ___________  ___________  ___________
/  Label 1  \/ *Label 2* \/  Label 3  \
+----------------------------------------------------+
| Content of Tab 2 visible                           |
|                                                    |
| (the …
Run Code Online (Sandbox Code Playgroud)

vaadin vaadin-flow

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

Vaadin:再次:构建完全停滞

这是我第二次遇到这种情况,Vaadin 版本的更改完全停止了我的构建过程:

当我想要给我的项目(一直在构建和执行良好)尝试将其从 Vaadin 18.0.2 更新到 20.0.2 时,问题就开始了。奇怪的是,这不起作用:虽然项目构建良好并且启动时没有错误或异常,但 UI 没有显示。所有加载启动页面的尝试都只产生一个蓝色进度条,该进度条快速进展到屏幕中间,然后变得越来越慢,最终请求超时。没有错误消息,什么都没有:-( 已经最令人失望了!

因此,我将 pom.xml 中的 Vaadin 版本恢复到 v18.0.2,现在我陷入困境。当尝试构建项目时,我遇到了这个错误:

...
[INFO] --- vaadin-maven-plugin:18.0.2:build-frontend (default) @ kis-monitoring ---
[INFO] Scanning classes to find frontend configurations and dependencies...
[INFO] Visited 2737 classes. Took 3034 ms.
[INFO] Visited 141 classes. Took 61 ms.
[INFO] writing file U:\workspace_Vaadin\my_project\target\flow-frontend\package.json.
[INFO] writing file U:\workspace_Vaadin\my_project\target\flow-frontend\form\package.json.
[INFO] writing file 'U:\workspace_Vaadin\my_project\target\index.html'
[INFO] writing file 'U:\workspace_Vaadin\my_project\target\index.ts'
[INFO] Parsing java files from [U:\workspace_Vaadin\my_project\src\main\java]
[INFO] There are no connect endpoints to generate.
[INFO] Running …
Run Code Online (Sandbox Code Playgroud)

vaadin vaadin20

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

在 Vaadin 20 中工作正常的 HTML 图标在 Vaadin 21 中工作时间更长

在 Vaadin 20 中,我可以添加一个图标作为 Java 组件:

add(new Icon("vaadin", "check));

或者在 HTML 中:

<iron-icon icon=vaadin:check></iron-icon>

除了 Vaadin 版本外,没有进行任何更改,在 Vaadin 21 中,第一个显示图标,第二个显示空白。我已浏览 Vaadin 21 文档,但没有看到任何有关格式更改的信息,这是怎么回事?

html java vaadin vaadin21

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

Vaadin 14 应用程序更新到 npm 7.20.6 后无法构建前端

npm 更新到 7.20.6 后,我无法再构建我的 Vaadin 应用程序。

它给出以下错误:

   Insufficient number of arguments or no entry found.

   Alternatively, run 'webpack(-cli) --help' for usage info.

   Hash: 4deef033da9d3a9fa458

   Version: webpack 4.42.0

  Time: 31ms

  Built at: 08/16/2021 5:02:34 PM

  ERROR in Entry module not found:            Error: Can't resolve 'babel-loader'   in '/srv/github/***/yalsee/_work/yalsee/yalsee/frontend'
  
  ERROR in Entry module not found: Error: Can't resolve 'babel-loader' in '/srv/github/***/yalsee/_work/yalsee/yalsee/frontend'
Run Code Online (Sandbox Code Playgroud)

但我没有在前端文件夹中使用/导入这个 babel-loader 。

我尝试使用 Vaadin 14.5.3 和 14.6.8

两者都给了我相同的结果。

vaadin npm webpack vaadin14

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

以编程方式取消选中 Vaadin 上下文菜单中的复选框

我创建了一个具有树结构的上下文菜单(添加了菜单项,然后在这些菜单项中添加了复选框作为子菜单项)。这在手动添加/删除项目方面工作得很好。但是,当涉及到以编程方式重置项目时,一般组件与特定组件(在本例中为复选框)之间存在冲突。

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 返回,并且该项目不能转换为复选框。所以问题是,我如何取消选中给定的复选框?

checkbox contextmenu vaadin vaadin-flow

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

Vaadin Flow:删除 PollListener

PollListenerVaadin 14 中是否有可能删除 a ?

UI.getCurrent().addPollListener(pollEvent -> { refresh(); }
Run Code Online (Sandbox Code Playgroud)

我需要开始刷新,但如果路由或 UI 发生更改,刷新必须停止。

是否有“Vaadin 可能性”,或者我必须自己构建一些东西?

谢谢你!

polling vaadin vaadin-flow

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

使用 Spring Boot 在 Vaadin 中创建 servlet 以添加会话侦听器

我正在尝试在 Vaadin 14 中创建一个在 Spring boot 上运行的 servlet。我已阅读Vaadin 应用程序生命周期上的应用程序生命周期页面,并尝试借助该页面创建 servlet,但没有成功。我的网页似乎无法识别该 URL。我尝试过 VaadinServlet 和 SpringServlet,这是我的代码:

@WebServlet(value = "name", urlPatterns = {"customservlet"})
public class CustomServlet extends SpringServlet implements SessionInitListener, SessionDestroyListener {

    public CustomServlet(ApplicationContext context, boolean forwardingEnforced) {
        super(context, forwardingEnforced);
    }

    @Override
    protected void servletInitialized() throws ServletException {
        super.servletInitialized();
        getService().addSessionInitListener(this);
        getService().addSessionDestroyListener(this);
    }

    @Override
    public void sessionInit(SessionInitEvent event)
            throws ServiceException {
        // Do session start stuff here
    }

    @Override
    public void sessionDestroy(SessionDestroyEvent event) {
        // Do session end stuff here
    }


    @Override …
Run Code Online (Sandbox Code Playgroud)

java servlets spring-boot vaadin-flow vaadin14

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