我有一个登录页面和主页面的gwt应用程序。登录应用程序转到主页面后。我想要的是如果我刷新页面留在主页面,而不是登录页面。我读过很多东西,我尝试了History Mechanish,但没有结果。这里是我的代码:如何防止gwt app进入页面刷新后的登录页面?
@Override
public void onSuccess(Login result) {
if (result.getLoginCount() == 1) {
final VerticalPanel userPanel = new VerticalPanel();
Anchor logout = new Anchor("logout");
logout.addStyleName("user");
logout.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
loginPanel.setVisible(true);
tablePanel.setVisible(false);
addPanel.setVisible(false);
userPanel.setVisible(false);
}
});
Label user = new Label("Hi " + usernameBox.getText());
userPanel.add(user);
user.addStyleName("user");
userPanel.add(logout);
userPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT);
userPanel.setVisible(true);
usernameBox.setText("");
passwordBox.setText("");
RootPanel.get("user").add(userPanel);
loginPanel.setVisible(false);
tablePanel.setVisible(true);
addPanel.setVisible(true);
History.newItem("main");
History.addValueChangeHandler(new ValueChangeHandler<String>() {
@Override
public void onValueChange(ValueChangeEvent<String> event) {
if(History.getToken().equals("main")){
loginPanel.setVisible(false);
tablePanel.setVisible(true);
addPanel.setVisible(true);
}
}
});
}
我也尝试:
String historyToken = event.getValue();
if(historyToken.substring(0 , 4).equals("main")){
loginPanel.setVisible(false);
tablePanel.setVisible(true);
addPanel.setVisible(true);
} else {
loginPanel.setVisible(true);
tablePanel.setVisible(false);
addPanel.setVisible(false);
}
是这个处理页面刷新与History.addValueChangeHandler的正确方法?我将不胜感激任何帮助。
这是一个很好的示例https://github.com/ArcBees/GWTP-Samples/tree/master/carstore –
将您的应用程序分为多个模块。 onLoad方法的登录页面可以检查用户是否已经登录并重定向到主入口模块。这些重定向仅适用于模块的html文件。简单。 – WLGfx
@WLGfx你的意思是有两个html文件? – Papadakis