java - 在 Vaadin 中找不到设计文件
问题描述
我想在 vaadin 的视图之间进行导航。我用 html 和导航器制作了 2 个视图,但是当我初始化第一个视图时,我有一个 DesignException
com.vaadin.ui.declarative.DesignException: Unable to find design file MainView.html in com.andrei
at com.vaadin.ui.declarative.Design.read(Design.java:608)
at com.andrei.MainView.<init>(MainView.java:23)
at com.andrei.MyUI.init(MyUI.java:39)
at com.vaadin.ui.UI.doInit(UI.java:770)
at com.vaadin.server.communication.UIInitHandler.getBrowserDetailsUI(UIInitHandler.java:218)
at com.vaadin.server.communication.UIInitHandler.synchronizedHandleRequest(UIInitHandler.java:76)
at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:40)
at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1601)
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:445)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
我试图将 html 文件放在 com.andrei 目录中,但它不起作用,之后我发现 html 文件必须位于资源文件夹中的信息,但它再次不起作用,我必须把这个文件放在哪里,或者我该如何更改 rootPath到目录
这是我的用户界面
@Theme("mytheme")
public class MyUI extends UI {
Navigator navigator;
protected static final String MAINVIEW = "main";
@Override
protected void init(VaadinRequest vaadinRequest) {
navigator = new Navigator(this, this);
// Create and register the views
navigator.addView("", new StartView());
navigator.addView(MAINVIEW, new MainView(navigator));
}
@WebServlet(urlPatterns = "/*", name = "MyUIServlet", asyncSupported = true)
@VaadinServletConfiguration(ui = MyUI.class, productionMode = false)
public static class MyUIServlet extends VaadinServlet {
}
}
这是主视图:
主视图
@DesignRoot
public class MainView extends VerticalLayout implements View {
// Menu navigation button listener
VerticalLayout menuContent;
Panel equalPanel;
Button logout;
public MainView(Navigator navigator) {
Design.read(this);
logout.addClickListener(event ->
navigator.navigateTo(""));
}
@DesignRoot
class AnimalViewer extends VerticalLayout {
Label watching;
Embedded pic;
Label back;
public AnimalViewer(String animal) {
Design.read(this);
watching.setValue("You are currently watching a " +
animal);
pic.setSource(new ThemeResource(
"img/" + animal + "-128px.png"));
back.setValue("and " + animal +
" is watching you back");
}
}
@Override
public void enter(ViewChangeListener.ViewChangeEvent event) {
if (event.getParameters() == null
|| event.getParameters().isEmpty()) {
equalPanel.setContent(
new Label("Nothing to see here, " +
"just pass along."));
return;
} else
equalPanel.setContent(new AnimalViewer(
event.getParameters()));
}
}
解决方案
正确的位置是最有可能的/src/main/resources/com/andrei/MainView.html
。
推荐阅读
- node.js - 从集合中获取多个文档时超出 Firestore 内存限制
- wordpress - phpmyadmin 未使用 docker 连接----配置中定义的 controluser 连接失败
- amazon-web-services - 无需配置密钥且仅具有 IAM 角色即可触发 s3 访问
- kubernetes - Istio 阻止与 MySQL 的连接
- python - 如何使用不同的参数并行运行相同的函数?
- python - 无法训练或测试数据
- nstextview - NSTextView -> cacheDisplay 丢失了一些下划线,但没有其他下划线
- git - git-p4 在哪里保存有关 perforce depot 的信息
- vercel - Zeit/Now - 在不更改链接的情况下更新现有部署 - 有可能吗?
- sql - 没有公共键的 SQL 连接