Javascript Vaadin应用程序内的pendo或类似服务
人们如何在Vaadin 7应用程序中使用?根据我目前的pendo知识,我知道需要做以下事情:Javascript Vaadin应用程序内的pendo或类似服务,javascript,vaadin,vaadin7,Javascript,Vaadin,Vaadin7,人们如何在Vaadin 7应用程序中使用?根据我目前的pendo知识,我知道需要做以下事情: 在每个页面上嵌入pendo JavaScript片段。因此,由于大多数Vaadin应用程序都是单页应用程序,我想这段代码需要加载到UI中,可能需要使用page.getCurrent().getJavaScript().execute或JavaScript.getCurrent().execute。我认为还有一个@JavaScript注释,但我已经尝试了几次,但都没有成功(请参阅和了解一个无法成功的地方)
page.getCurrent().getJavaScript().execute
或JavaScript.getCurrent().execute
。我认为还有一个@JavaScript
注释,但我已经尝试了几次,但都没有成功(请参阅和了解一个无法成功的地方)JavaScript.getCurrent().execute
登录到我的应用程序后完成(所以现在有用户id),但不完全确定在哪里执行。此外,根据Pendo的说法,它需要在每次重新加载windows时完成。我想我可以在我的UI类中这样做,只有在登录完成后才会发生。但在视图之间切换时是否也需要这样做?严格来说,这不是重新加载,所以只是不确定基本上,我发现有人在Vaadin应用程序中使用了Pendo,所以我希望能得到任何建议,特别是Pendo文档中尚未包含的建议。我对Pendo没有直接的经验,但使用了类似的产品WalkMe()。为了将其添加到页面中,我们执行了以下操作
com.vaadin.server.VaadinServlet的自定义实现
com.vaadin.server.VaadinServlet#servletInitialized
,在这里我们执行以下操作@覆盖
public void servletilized()抛出ServletException{
super.servletilized();
getService().addSessionInitListener(新的SessionInitListener(){
@凌驾
public void sessionInit(SessionInitEvent事件)引发ServiceException{
event.getSession().addBootstrapListener(新的BootstrapListener(){
@凌驾
public void modifyBootstrapFragment(BootstrapFragmentResponse响应){
}
@凌驾
public void modifyBootstrapPage(BootstrapPageResponse响应){
如果(scripts.length!=0){
ArrayUtils.reverse(脚本);
for(字符串脚本:脚本){
如果(!script.isEmpty()){
response.getDocument().head().prependement(“脚本”).attr(“类型”,“文本/javascript”).text(脚本);
}
}
}
}
} );
}
} );
}
- 要添加到头中的脚本通过构造函数基于自定义servlet实现
@配置
公共类VaadinConfig{
@豆子
公共VaadinServlet getVaadinServlet(){
返回新的CustomServlet(新字符串[]{“实际的WalkMeScript”});
}
}
为了让WalkMe了解它在哪个页面上以及接下来要突出显示哪个项目,我们在每个相关的Vaadin组件上引入了ID,然后在WalkMe脚本中使用这些ID
另外,值得一提的是,我们使用的是Spring Boot,因此根据堆栈的不同,如何注册Servlet可能会有所不同
pendo.js
脚本。这个脚本只有第一个链接中的“片段的第1部分”,很明显我去掉了
和
,因为我把它自己放在了一个文件中@com.vaadin.annotations.JavaScript(“pendo.js”)
JavaScript.getCurrent().execute(pendoInitialization)
,其中“pendoInitialization”是上面第一个链接中请求的访问者和帐户信息,在我的例子中类似于pendo.initialize({visitor:{id:'VDR_JCARROS'},account:{id:'VEEDER'})代码>
这似乎很有效。请添加您尝试过的代码以及失败的原因(例如错误、堆栈跟踪、日志等),以便我们对其进行改进。