在Vaadin Flow中,例如版本 14.1,如何通过服务器端的Java调用获取user\xe2\x80\x99s Web 浏览器的IP 地址?
\n\n与问题类似,在 Vaadin 7 Web 应用程序中获取用户\xe2\x80\x99s IP 地址和其他客户端信息,但适用于 Vaadin Flow 而不是 Vaadin 7 & 8。
\n我们有一个 Vaadin 14 (Flow) 应用程序,它的前端是一个 Apache 反向代理,该代理与Gluu集成以进行身份验证。
当会话不再有效时,无论是由于会话超时还是在另一个浏览器选项卡/窗口中注销,Apache 服务器都会向 Gluu 服务器发送重定向,让用户再次登录。然而,当内部 Vaadin XHR调用(Ajax 请求)发生这种情况时,Vaadin 似乎不能很好地处理此响应,并显示“来自服务器的无效 JSON 响应”错误。
我想要的是 Vaadin 将浏览器位置设置为重定向中指示的 URL,或者刷新页面(可能之间有确认消息),在这种情况下,浏览器将很好地遵循重定向。如何实现这一目标,或者还有哪些其他选择?
我正在使用 Vaadin Flow (14.1.18),我的问题是我遇到过的一个非常奇怪的行为。我已将以下配置添加到 Spring Boot 项目的 application.properties 文件中。
// Expected behavior: Vaadin Client to send heartbeat to the server every second
vaadin.heartbeatInterval=1
// Expected Behavior: Vaadin Server to close Idle sessions after 3 seconds (3 rounds of failed heart beats)
vaadin.closeIdleSessions=true
Run Code Online (Sandbox Code Playgroud)
我已经使用下面的代码检查了这些配置是否在运行时实际应用
DeploymentConfiguration deployConf = VaadinSession.getCurrent().getConfiguration();
int hbi =deployConf.getHeartbeatInterval();
boolean killIdle = deployConf.isCloseIdleSessions();
logger.info("Deployment Config >> KillIdleSessions : {} -- HeartBeatInterval : {}", killIdle, hbi);
Run Code Online (Sandbox Code Playgroud)
我得到以下结果,显示我的配置已应用
2020-03-05 23:16:01.015 INFO 19224 --- [nio-9200-exec-3] com.package.sandbox.MainView:部署配置 >> KillIdleSessions:true -- HeartBeatInterval:1
但是,问题是,在运行时,Vaadin 似乎忽略了所有这些配置,尽管我关闭了浏览器(UI …
我有一个 Crud(来自 Vaadin Pro)并且想使用 BinderCrudEditor 中的上传组件。Upload 组件不存储值(或者更确切地说,缺少 HasValue 接口),因此我无法使用 Binder。有没有办法以某种方式包含它,而无需在 Crud 中创建额外的按钮来上传文件,然后与侦听器一起使用?
PollListenerVaadin 14 中是否有可能删除 a ?
UI.getCurrent().addPollListener(pollEvent -> { refresh(); }
Run Code Online (Sandbox Code Playgroud)
我需要开始刷新,但如果路由或 UI 发生更改,刷新必须停止。
是否有“Vaadin 可能性”,或者我必须自己构建一些东西?
谢谢你!
我很难找到用新数据更新图表的方法。使用以下方法将数据添加到图表中:
Configuration conf = chart.getConfiguration();
conf.addSeries(series);
Run Code Online (Sandbox Code Playgroud)
但没有对应的“删除(系列)”!?!因此,如果我想更新正在显示的数据并添加另一个系列,我实际上会在图表中添加另一条线(或条形图或我选择的任何可视化效果),这显然不是我想要/需要的。
我克服这个问题的第一次尝试是获取旧数据系列并将它们从图表中删除,但getSeries()我只得到现有系列的不可修改的副本,因此该尝试以java.lang.UnsupportedOperationException.
因此我的问题是:如何说服现有图表删除所有旧数据系列?请不要告诉我,我每次都需要重新创建整个图表组件!
我正在尝试在 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 flow 中是否存在一个选项,可以将视图放在不同的包中,而不是作为主 Spring Boot 类所在的子包?例如
com.xyz.vaadin.app --> Spring Boot Main
com.xyz.vaadin.config
com.xyz.vaadin.views --> Main view
Run Code Online (Sandbox Code Playgroud)
我已经尝试使用“@SpringBootApplication scanBasePackages”或“scanBasePackageClasses”并传递了主视图包或主视图类,但在启动应用程序后,它没有找到视图。错误“找不到路线”
我有一个对话框是:
要求:
我有一个要求,我不需要关闭对话,并且必须在后台加载不同的页面,以从对话上的网格中选择数据。
我做了什么: 我知道如何在分离监听器的帮助下在后台打开页面。
vehicleInfoPopUpView.addDetachListener(e -> {
UI.getCurrent().navigate(AssignmentPageContainer.class,
String.valueOf(vehicleInfoPopUpView.getCanFileNumber()));
});
Run Code Online (Sandbox Code Playgroud)
上面的代码(在父页面中)加载/打开一个新页面,但要做到这一点,我必须关闭我的对话框(我不必这样做,我必须保持对话框打开)。
我找不到任何资源告诉我如何在不关闭对话框的情况下在后台加载/打开新页面
任何小帮助!我在这里先向您的帮助表示感谢。
我正在使用 vaadin flow v21。我喜欢创建一个使用自己的 svg 图标集的自定义组件。我尝试根据 vaadin-icon 创建集合,但 svg 定义不会复制到影子根中。
我做了以下事情
CustomIcon派生自的 Component 类com.vaadin.flow.component.icon.IconJSModule,其中将包含新图标集作为聚合物模板。自定义组件类
@JsModule("./icons/custom-iconset-svg.js")
public class CustomIcon extends Icon {
public CustomIcon(String collection, String icon) {
super(collection,icon);
}
}
Run Code Online (Sandbox Code Playgroud)
文件“自定义图标集-svg.js”
import '@vaadin/vaadin-icon/vaadin-iconset.js';
import '@vaadin/vaadin-icon/vaadin-icon.js';
const $_documentContainer = document.createElement('template');
$_documentContainer.innerHTML = `<vaadin-iconset-svg name="custom" size="16">
<svg>
<defs>
<vaadin-iconset name="vaadin" size="16">
<svg><defs>
<g id="custom:abacus"><path d="..."></path></g>
</defs>
</svg>
</vaadin-iconset-svg>`;
document.head.appendChild($_documentContainer.content);
Run Code Online (Sandbox Code Playgroud)
新“CustomIcon”类的使用
Icon icon = new CustomIcon("custom","abacus")
add(icon);
Run Code Online (Sandbox Code Playgroud)
这会稍后创建以下 html 元素
<head>部分中添加了自定义图标集<vaadin-iconset-svg name="custom" ... …vaadin-flow ×10
vaadin ×8
java ×5
spring-boot ×2
vaadin14 ×2
browser ×1
ip-address ×1
javascript ×1
polling ×1
polymer ×1
servlets ×1
session ×1
spring ×1
svg ×1
vaadin10 ×1
vaadin20 ×1