标签: vaadin-flow

当 SelectionMode 为 MULTI 时,隐藏 Flow 组件网格中的“全选”复选框 (Vaadin 21)

当您在 Vaadin v21 中创建网格组件并切换到多选模式时,顶部会有一个“全选”复选框。如何禁用它?网格的默认行为似乎不同,因此 Vaadin 版本之间的解决方案也不同。

Grid<Person> grid = new Grid<>(Person.class, false);
grid.setSelectionMode(Grid.SelectionMode.MULTI);
grid.setItems(personRepository.findAll());

Run Code Online (Sandbox Code Playgroud)

vaadin vaadin-grid vaadin-flow vaadin21

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

如何调整布局中按钮之间的间距,例如 Vaadin Flow 中的 Horizo​​ntalLayout?

例如,如何减少以下 Horizo​​ntalLayout 中按钮之间的间距:

在此输入图像描述

代码:

HorizontalLayout horizontalLayout = new HorizontalLayout();
horizontalLayout.setWidthFull();
horizontalLayout.setJustifyContentMode(JustifyContentMode.END);
buttons.forEach(button -> {
    horizontalLayout.add(button);
    horizontalLayout.addThemeVariants(ButtonVariant.LUMO_SMALL);
});
Run Code Online (Sandbox Code Playgroud)

** 适用于 Vaadin Flow (Vaadin 14+)

vaadin vaadin-flow

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

Vaadin Grid 中的可点击图标在每次调用 setItems() 后多次执行代码

在我的 Vaadin 应用程序中,我显示了Grid带有自定义类的项目Transaction。该网格的行为应如下所示:

  1. 它应包含一个“操作”列,该列又应包含一个或多个图标。为了简单起见,我们只考虑一个图标。
  2. 这些图标中的每一个都应该是可点击的。
  3. 单击图标,将使用Transaction当前行的项目执行一些代码。在这里,一个简单的Notification.show().

我设法用以下代码来实现这一点:

private final Grid<Transaction> transactionGrid = new Grid<>(Transaction.class, false);
transactionGrid.setItems(transactionService.getItems());

transactionGrid.addColumn(getActionsRenderer()).setHeader("Actions").setAutoWidth(true);

private ComponentRenderer<Icon, Transaction> getActionsRenderer() {
    final Icon replyIcon = new Icon(VaadinIcon.ENVELOPE);
    return new ComponentRenderer<>(transaction -> {
        replyIcon.addClickListener(event -> Notification.show(transaction.getOrderNumber()));
        return replyIcon;
    });
}
Run Code Online (Sandbox Code Playgroud)

单击该图标会显示一条带有交易的通知orderNumber。问题如下:

该应用程序还提供了一个“重新加载”按钮,它的作用与此类似:

refreshIcon.addClickListener(event -> {
    final List<Transaction> transactions = transactionService.getItems();
    transactionGrid.setItems(transactions);
});
Run Code Online (Sandbox Code Playgroud)

单击刷新图标后,单击该行replyIcon会显示相同数据的三个通知。下次刷新后,它会显示五个,然后是七个,依此类推。

因此,看起来好像每次刷新都会添加两个任何“组件”,它们都注册相同的点击侦听器。调试时,我可以看到有多个ClickEventeventBus但我不知道它们来自哪里。

在此输入图像描述

vaadin vaadin-grid vaadin-flow vaadin14

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

监听在另一个视图中触发的事件

如何在从另一个视图触发事件的视图中添加侦听器?

看法:

fireEvent(new SelectionEvent(this, false));
Run Code Online (Sandbox Code Playgroud)

应用程序布局:

addListener(AnotherView.SelectionEvent.class, e -> setTabsEnabled(true));
Run Code Online (Sandbox Code Playgroud)

View 将 AppLayout 作为路由目标组件的父组件。

事件已触发,但侦听器未收到事件来执行表达式。当两者在同一视图中执行但不分开时,此模式效果很好。

vaadin vaadin-flow

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

在Vaadin 14的Uploader中,如何清除之前上传的文件?

在 Vaadin 14 中,我使用 Vaadin Designer 添加了 Uploader 组件。效果很好。但是,我不知道如何清除以前上传的文件。我试过:

multiFileMemoryBuffer.getFiles().clear();
Run Code Online (Sandbox Code Playgroud)

但它没有做任何事情。当使用 Vaadin Designer 创建组件时,是否有办法清除 Vaadin 14 中的 Uploader 组件中先前上传的文件?

vaadin vaadin-flow

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

Vaadin 23 延迟加载详细信息组件

我喜欢Vaadin 详细信息组件。但看起来它总是预先渲染的。是否可以将Details组件变成延迟加载模式?

我想在用户展开面板时呈现详细信息内容。可以用Details组件来实现吗?如果不是,可以使用什么来实现这种行为?

vaadin vaadin-flow vaadin23

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

无法在 Vaadin 视图中从 @JavaScript import 调用 JS 函数

我有这样的瓦丁观点:

@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 文件实际上还没有被浏览器加载。

vaadin vaadin-flow

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

如何防止Vaadin 10在长时间处理时断开连接?

我有一个简单的代码,点击按钮后模仿数据处理:

@Route("long")
public class LongWait extends VerticalLayout {

    public LongWait() {
        Button processButton = new Button("Process");
        processButton.addClickListener(event -> process());
        add(processButton);
    }

    //imitates processing data: 
    //should sleep for 10 minutes and then add "finished" label
    //instead loose connection after 5 minutes
    private void process() {
        try {
            Thread.sleep(10 * 60 * 1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        add(new Label("finished"));
    }
}
Run Code Online (Sandbox Code Playgroud)


问题是 - 在"处理"5分钟后浏览器与服务器松散连接.

vaadin松散的服务器连接

为什么会发生这种情况以及如何避免它?
(我真的需要处理大量数据.)

Vaadin:10.0.3
Tomcat:9.0.8
Java:1.8.0_162

UPD: 之后process()方法已经完成它的工作(经过10分钟),我有以下的日志错误:

java.lang.UnsupportedOperationException: Confirmed duplicate message from the …
Run Code Online (Sandbox Code Playgroud)

java vaadin vaadin10 vaadin-flow

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

如何使用Vaadin显示很多文本?

我需要处理一些数据并在网页上显示处理日志。(大约300行文字)。
我试图使用标签。最初,它工作正常-页面变得可滚动,并且所有文本都可以看到。但是大约100个标签后,页面变得没有响应。
如何管理这项任务?
(我尝试在webcomponents.org上寻找其他组件,但找不到任何东西。)

vaadin vaadin10 vaadin-flow

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

Vaadin Flow:如何使用从Java中选择

Vaadin 文档声明它支持Select使用Java 调用的组件.

你怎么访问它?我找不到任何相应的课程.甚至它的安装部分都没有提到它.

html-select vaadin vaadin-flow

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