Wednesday, June 1, 2016

Re: Getting username from url only works after refresh

This is the ActivityMapper

public class AppActivityMapper implements ActivityMapper {

private ClientFactory clientFactory;

public AppActivityMapper(ClientFactory clientFactory) {
super();
this.clientFactory = clientFactory;
}

@Override
public Activity getActivity(Place place) {
if (place instanceof LoginPlace) {
return new LoginActivity((LoginPlace) place, clientFactory);
} else if (place instanceof RegisterPlace) {
return new RegisterActivity((RegisterPlace) place, clientFactory);
} else if (place instanceof UserPlace) {
return new UserActivity((UserPlace) place, clientFactory);
} else if (place instanceof AdminPlace) {
return new AdminActivity((AdminPlace) place, clientFactory);
}

return null;
}

}

And this is the onModuleLoad() method
public class AdministrareBloc implements EntryPoint {

private Place defaultPlace = new LoginPlace("Login Place!");
private SimplePanel appWidget = new SimplePanel();

@Override
public void onModuleLoad() {
ClientFactory clientFactory = GWT.create(ClientFactory.class);
EventBus eventBus = clientFactory.getEventBus();
PlaceController placeController = clientFactory.getPlaceController();

// Start Activity for the main widget with our ActivityMapper
ActivityMapper activityMapper = new AppActivityMapper(clientFactory);
ActivityManager activityManager = new ActivityManager(activityMapper, eventBus);
activityManager.setDisplay(appWidget);

// Start PlaceHistoryHandler with our PlaceHistoryMapper
AppPlaceHistoryMapper historyMapper = GWT.create(AppPlaceHistoryMapper.class);
PlaceHistoryHandler historyHandler = new PlaceHistoryHandler(historyMapper);
historyHandler.register(placeController, eventBus, defaultPlace);

RootPanel.get().add(appWidget);
historyHandler.handleCurrentHistory();
}

}

What do you mean by "Where does the UserPlace come from ? " ? 

Thanks

marți, 31 mai 2016, 01:25:10 UTC+3, Olar Andrei a scris:

My login based application, requires to always know the username of the logged in user. (MVP) . So I'm getting the username from the url, but when the page opens after the login succeeded, I can't get the username from the url, because it does not appear to exists, but it is there. It only works after a refresh. Then I'm able to get the username.


The URL is in the form http://127.0.0.1:8888/AdministrareBloc.html#AdminPlace:admin, where I'm splitting the String to only get the admin part.


I thought this is because it downloads the code before verifying the user. So I placed a split point in my code like this: (I don't know if I placed it correctly)


loginButton.addClickHandler(new ClickHandler() {            @Override          public void onClick(ClickEvent event) {              final String username = usernameBox.getText();              final String password = passwordBox.getText();              GWT.runAsync(new RunAsyncCallback() {                    @Override                  public void onSuccess() {                      performUserConnection(username, password);                  }                    @Override                  public void onFailure(Throwable reason) {                      // TODO Auto-generated method stub                  }              });          }      });      private static void performUserConnection(String username, String password) {      DBConnectionAsync rpcService = (DBConnectionAsync) GWT.create(DBConnection.class);      ServiceDefTarget target = (ServiceDefTarget) rpcService;      String moduleRelativeURL = GWT.getModuleBaseURL() + "DBConnectionImpl";      target.setServiceEntryPoint(moduleRelativeURL);        rpcService.authenticateUser(username, password, new AsyncCallback<User>() {            @Override          public void onSuccess(User user) {                if (user.getType().equals("User")) {                  String username = user.getUsername();                  presenter.goTo(new UserPlace(username));              } else if (user.getType().equals("Admin")) {                  String username = user.getUsername();                  presenter.goTo(new AdminPlace(username));              }          }        }  }


This is happening when the user clicks the login button. Is the split point placed correclty, or not ? How can I get the username without needing to refresh the page after a successful login ?

Thanks in advance

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment