This is bug 1730 reported more than 2 years ago on version 1.4
(below). Version 1.7 still has it. I feel disappointed that something
so basic hasn't been resolved. One can not use anchors and class
History together, unless they don't care about IE users, which still
the majority.

http://code.google.com/p/google-web-toolkit/issues/detail?id=1730&q=history

Wilson



On Dec 28, 4:46 pm, compuroad <[email protected]> wrote:
> Thanks for the advise. I did try some variations of the your
> suggestions. But I still get the App reload if the History.newitem()
> is called anywhere (with or without the boolean flag). One point I did
> not make clear: I am using the Anchor class to navigate (for example):
>
> //this triggers reload any I click on it. It does navigate momentarily
> to the login page and then reloads.
> private static Anchor ancLogin = new Anchor("Login","#Login#");
>
> //this triggers reload once upon the anchor's click event and then
> behaves as expected. Thus I need to click on the login anchor twice to
> get to the login page.
> private static Anchor ancLogin = new Anchor("Login","?
> page=Login#Login#");
>
> This behavior is found on the gwt hosted mode (port 8080) and also on
> IE. I did not try with FireFox yet.
>
> Below is the class responsible for building the anchors:
>
> import com.google.gwt.core.client.GWT;
> import com.google.gwt.event.dom.client.ClickEvent;
> import com.google.gwt.event.dom.client.ClickHandler;
> import com.google.gwt.user.client.Window;
> import com.google.gwt.user.client.ui.Anchor;
> import com.google.gwt.user.client.ui.HTML;
> import com.google.gwt.user.client.ui.RootPanel;
>
> public class TopLinks implements ClickHandler {
>
>         private static CerradoConstants constants = null;
>
>         //top links
>         private static Anchor ancHome = new Anchor("Home","#index#");
>         private static Anchor ancAbout = new Anchor("About
> Us","#aboutUs#");
>         //private static Anchor ancBoom = new Anchor("The Brazilian
> Boom","?page=boom#boom#");
>         private static Anchor ancBoom = new Anchor("The Brazilian
> Boom","#boom#");
>         private static Anchor ancHowStarted = new Anchor("How It All
> Started","#howStarted#");
>         //user stuff
>         private static Anchor ancAccount = new Anchor("Create
> Account","#Account#");
>         //this is the key to make history work
>         private static Anchor ancLogin = new Anchor("Login","?
> page=Login#Login#");
>
>         private static Anchor ancLogout = new Anchor
> ("Logout","#Logout#");
>
>         private Controller controller = null;
>
>         public TopLinks(Controller controller, CerradoConstants
> constants){
>
>                 this.constants = constants;
>                 this.controller = controller;
>
>                 ancHome.addClickHandler(this);
>                 ancAbout.addClickHandler(this);
>                 ancBoom.addClickHandler(this);
>                 ancHowStarted.addClickHandler(this);
>
>                 ancAccount.addClickHandler(this);
>                 ancLogin.addClickHandler(this);
>                 ancLogout.addClickHandler(this);
>
>                 ancHome.setStyleName("gwt-Top-Anchor");
>                 ancAbout.setStyleName("gwt-Top-
> Anchor");
>                 ancBoom.setStyleName("gwt-Top-Anchor");
>                 ancHowStarted.setStyleName("gwt-Top-Anchor");
>
>                 ancAccount.setStyleName("gwt-Top-Anchor");
>                 ancLogout.setStyleName("gwt-Top-Anchor");
>                 ancLogin.setStyleName("gwt-Top-Anchor");
>
>         }
>
>         public void show(){
>
>                 RootPanel.get("links").clear();
>                 RootPanel.get("links").add(ancHome);
>                 RootPanel.get("links").add(ancAbout);
>                 RootPanel.get("links").add(ancBoom);
>                 RootPanel.get("links").add(ancHowStarted);
>                 setLoginAnchor(false);
>
>         }
>
>         private  void setLoginAnchor(boolean startUp){
>
>                 if (controller.getData().getUser() == null){
>
>                         RootPanel.get("links").add(ancAccount);
>
>                         RootPanel.get("links").add(ancLogin);
>
>                 }else{
>
>                         Window.alert(controller.getData().getUser
> ().getLastName());
>
>                         RootPanel.get("links").add(ancLogout);
>                 }
>
>         }
>
>         public void onClick(ClickEvent event) {
>
>                 String action =Window.Location.getParameter("page");
>                 String link = event.getSource().toString();
>                 String url = link.substring(link.indexOf("#")+1);
>                 url = url.substring(0, url.lastIndexOf("#"));
>
>               Window.alert("topLink: action= "+action);
>
>              Cerrado.getInstance().setPage(url, constants);
>
>         }
>
> }
>
> --------------------------------------------------------------------------- 
> -----
>
> On Dec 28, 10:43 am, Trevis <[email protected]> wrote:
>
>
>
> > I'm glad you asked this question!  I've just assumed that you had to
> > fire the change event when adding to the history stack with addItem.
>
> > I guess you probably saw it but your answer is simply use the two
> > argument version and pass in "false" for the issueEvent argument.
>
> > On Dec 23, 11:32 pm,compuroad<[email protected]> wrote:
>
> > > I thought History.newItem() would only build the history stack.
> > > However in my App it fires the EntryPoint onModuleLoad, restarting the
> > > application.
>
> > > What am I missing?

--

You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en.


Reply via email to