使用 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 Web 应用程序有一个默认路由。我正在运行 tomcat 8.5,没有 springboot。
package dev.mine.ui.user.views;
import com.vaadin.flow.router.BeforeEnterEvent;
import com.vaadin.flow.router.BeforeEnterObserver;
import com.vaadin.flow.router.Route;
@Route(value = "")
public class DefaultView implements BeforeEnterObserver
{
public DefaultView()
{
}
@Override
public void beforeEnter(BeforeEnterEvent event)
{
event.forwardTo(SearchView.class);
}
}
Run Code Online (Sandbox Code Playgroud)
我没有 web.xml,而是使用 @WebServlet 注释
package dev.mine.servlets;
import javax.servlet.annotation.WebServlet;
import com.vaadin.flow.server.VaadinServlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
@WebServlet(urlPatterns =
{ "/*", "/VAADIN/*" }, name = "Mine", asyncSupported = true, initParams =
{
@WebInitParam(name = "org.atmosphere.cpr.AtmosphereInterceptor", value = "dev.onepub.servlets.AtmosphereFilter"),
@WebInitParam(name = "closeIdleSessions", value = "true"),
/// changed …Run Code Online (Sandbox Code Playgroud) 当我从两个帐户登录我的 vaadin 应用程序时,我收到此错误消息
无法将节点从一棵状态树移动到另一棵状态树。如果这是故意的,请首先通过调用removeFromTree从其当前状态树中删除该节点
了解有关调用错误的更多信息:使用 Google OAuth2 登录 当从用户 A 的帐户登录应用程序时,一切正常,一旦我同时从用户 B 的帐户登录应用程序,我就会收到一条错误消息
据我从消息中了解到,我有公共接口对象,我必须为每个传入用户清理或创建新的接口对象
也许有一些关于实现多个用户同时使用的应用程序或类似内容的教程?