have you implemented the onHistoryChanged(String token) method? In
have to rebuild the state yourself based on the token as it's not done
automatically. I think you may also need to slightly refactor the
code to get history working as you want. I would most likely have the
following:
In your class definition tell it your are implementing the GWT history
code:
public class MyClass implements EntryPoint, ValueChangeHandler<String>
{....}
In the onModuleLoad method, link into the History:
public void onModuleLoad(){
.....
// Add 'this' as the change handler
History.addValueChangeHandler(this);
// Run the handler for the first time in case user has
come in to application with a URL containing a history token
History.fireCurrentHistoryState();
}
then you have the onHistoryChanged method you would handle the history
token in the URL - in this case I'm guessing you would have a token
for page 2 which indicates you want to display page 2 and if there's
no token, then display page 1:
public void onHistoryChanged(String token){
if (token.equals(PAGE_TWO_TOKEN){
rootpanel.get("foo").clear();
rootpanel.get("foo").add(new page2());
} else {
rootpanel.get("foo").clear();
rootpanel.get("foo").add(new page1());
}
}
THen, in you button handler you would just set the token instead of
trying to create the page two, i.e.
onButtonClick(){
// Add token and allow value change event to be fired - the change
is the picked up by the history subsystem in the onHistoryChange
method and new page shown
History.newItem(PAGE_TWO_TOKEN, true);
}
(don't forget to keep the history iframe, created when you create an
application, in your html code fr history to work in some browsers)
Hope that helps in some way!
//Adam
On 25 Apr, 21:10, mrfreeze81 <[email protected]> wrote:
> Hi,
> I'm implementing a code using GWT. I want to implement history using
> ValueChangeHandler. This is a feature in the new 1.6 version of GWT.
> This is how my application looks for now
>
> I have a new class for every page I want to create. i.e page1.java and
> page2.java each of which extents Composite.
> On module load, I assign page1 to rootpanel.
> When a button is clicked on page1 i navigate to page2 by
>
> onClickButton ( ) {
> rootpanel.get("foo").clear();
> rootpanel.get("foo").add(new page2());
>
> }
>
> I have added page1's state to the history History.nextItem
> (page1state);
>
> I have also added implements ValueChangeHandler to Page1.java class. I
> don't have a separate history handler and so I do
> History.addValueChangeHandler(this);
>
> What do I do to the unimplemented onValueChange() method in my page1
> class. And where do I fire the inital state?
> History.fireCurrentHistoryState(); ???
>
> Also, when I am in the second page (page2), and hit refresh, it loads
> back the first page and not the current state, even if my token reads
> the next state.
>
> Thanks in advance
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---