gpt4 book ai didi

vaadin - 如何更改 Vaadin 7 应用程序的主视图?

转载 作者:行者123 更新时间:2023-12-04 22:47:14 25 4
gpt4 key购买 nike

我想编写一个 Vaadin 7 应用程序(参见下面的 MyVaadinUI),它要求用户输入用户名和密码。

如果它们是正确的,则应出现另一个 View (请参阅下面的 MainUI)并占据整个区域(替换登录 View )。

我尝试在 MyVaadinUI.goToMainWindow 方法中实现此转换,但出现错误

java.lang.RuntimeException: Component must be attached to a session when getConnectorId() is called for the first time
at com.vaadin.server.AbstractClientConnector.getConnectorId(AbstractClientConnector.java:417)
at com.vaadin.server.communication.ConnectorHierarchyWriter.write(ConnectorHierarchyWriter.java:67)
at com.vaadin.server.communication.UidlWriter.write(UidlWriter.java:143)
at com.vaadin.server.communication.UidlRequestHandler.writeUidl(UidlRequestHandler.java:149)
at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:97)
at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:37)
at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1371)
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:238)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)

当我运行应用程序并按下按钮时。

我该如何解决?
@Theme("mytheme")
@SuppressWarnings("serial")
public class MyVaadinUI extends UI
{
private TextField userNameTextField;
private PasswordField passwordTextField;

@WebServlet(value = "/*", asyncSupported = true)
@VaadinServletConfiguration(productionMode = false, ui = MyVaadinUI.class, widgetset = "ru.mycompany.vaadin.demo.AppWidgetSet")
public static class Servlet extends VaadinServlet {
}

@Override
protected void init(VaadinRequest request) {
final VerticalLayout layout = new VerticalLayout();
layout.setMargin(true);
setContent(layout);

addUserNameTextField(layout);
addPasswordTextField(layout);

addButton(layout, request);
}

private void addPasswordTextField(Layout aLayout) {
passwordTextField = new PasswordField("Пароль:");

aLayout.addComponent(passwordTextField);

}

private void addUserNameTextField(final Layout aLayout) {
userNameTextField = new TextField("Пользователь:");

aLayout.addComponent(userNameTextField);
}


private void addButton(final Layout aParent, final VaadinRequest request) {
final Button button = new Button("Войти");
button.addClickListener(new Button.ClickListener() {
public void buttonClick(Button.ClickEvent event) {
final boolean credentialsCorrect = checkCredentials();

if (credentialsCorrect) {
goToMainWindow(request);
} else {
[...]
}
}
});
aParent.addComponent(button);
}

private void goToMainWindow(final VaadinRequest aRequest) {

final MainUI mainUI = new MainUI();
mainUI.init(aRequest);
setContent(mainUI);
}

}

@Theme("mytheme")
@SuppressWarnings("serial")
public class MainUI extends UI {
@Override
protected void init(final VaadinRequest vaadinRequest) {
final HorizontalSplitPanel splitPanel = new HorizontalSplitPanel();

setContent(splitPanel);

splitPanel.setSizeFull();
splitPanel.setSplitPosition(200, Unit.PIXELS);

final String[] tabLabels = new String[] {
"Tree item 1",
"Tree item 2"};

final Tree tree = new Tree();

for (int i=0; i < tabLabels.length; i++)
{
addTreeItem(tree, tabLabels[i]);
}

splitPanel.setFirstComponent(tree);
splitPanel.setSecondComponent(new Label("Test"));
}

private void addTreeItem(final Tree aTree, final String aLabel) {
aTree.addItem(aLabel);
}
}

最佳答案

在 Vaadin 论坛上有人建议使用 navigator ,这解决了我的问题。

关于vaadin - 如何更改 Vaadin 7 应用程序的主视图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19270675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com