我的 Vaadin 8 应用程序中有一个网格,有时网格的滚动条在不需要时出现或在不需要时消失。他们甚至可能陷入循环。我的网格有五列,我只使用 Vaadin 8 附带的内置渲染器。
我使用 CSS 将第一列的列宽设置为 30%。如果我从主题中删除该行,则不会出现问题,但我需要它。我怎样才能让它工作?
有什么想法为什么在生产环境中发布新的 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 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 的 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 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 20 中,我可以添加一个图标作为 Java 组件:
add(new Icon("vaadin", "check));
或者在 HTML 中:
<iron-icon icon=vaadin:check></iron-icon>
除了 Vaadin 版本外,没有进行任何更改,在 Vaadin 21 中,第一个显示图标,第二个显示空白。我已浏览 Vaadin 21 文档,但没有看到任何有关格式更改的信息,这是怎么回事?
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
两者都给了我相同的结果。
我创建了一个具有树结构的上下文菜单(添加了菜单项,然后在这些菜单项中添加了复选框作为子菜单项)。这在手动添加/删除项目方面工作得很好。但是,当涉及到以编程方式重置项目时,一般组件与特定组件(在本例中为复选框)之间存在冲突。
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 返回,并且该项目不能转换为复选框。所以问题是,我如何取消选中给定的复选框?
PollListenerVaadin 14 中是否有可能删除 a ?
UI.getCurrent().addPollListener(pollEvent -> { refresh(); }
Run Code Online (Sandbox Code Playgroud)
我需要开始刷新,但如果路由或 UI 发生更改,刷新必须停止。
是否有“Vaadin 可能性”,或者我必须自己构建一些东西?
谢谢你!
我正在尝试在 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) vaadin ×9
vaadin-flow ×6
java ×3
spring-boot ×2
vaadin14 ×2
checkbox ×1
contextmenu ×1
css ×1
grid ×1
html ×1
lit ×1
npm ×1
polling ×1
servlets ×1
vaadin-grid ×1
vaadin20 ×1
vaadin21 ×1
vaadin22 ×1
vaadin8 ×1
webpack ×1