GWT history
다른 Ajax history 와 원리가 같다.(RSH, Really Simple History)기본 전제는 url framgment id(http://url/page#hello) 안에서 internal state 를 계속 추적하는 것이다.
fragment 를 update 하는 것은 일반적으로 page 를 reload 시키지 않는다.
그래서 bookmark 를 할 수도 있다.
application 은 unique 한 history token 을 만들 수 있다.
이 token 은 간단한 string 이다. application 이 이 token 을 parsing 해서 특정 state 를 return 해준다.
아래 같은 모양으로 full url 이 browser history 에 저장된다.
http://www.example.com/HistoryExample.html#page1
application 에서 browser 의 history stack 에 history 를 추가하려면 아래처럼 token 을 추가 하면 된다.
- History.newItem(token)
user 가 back button 을 누르면,
History.addValueChangeHandler()로 추가한 ValueChangeHandler() 가 호출되게 된다.
targetHistoryToken
기본적으로 GWT 는 <prefix>:<token> 을 history token 으로 사용한다.[ref. 2] <prefix> 는 따로 정해주지 않으면 default 로 Place class name 을 사용하게 된다.그래서 Hyperlink 에서 targetHistoryToken 을 적어줄 때도 위와 같은 형식으로 적어줘야 한다.
<g:Hyperlink ui:field = "newTaskLink" targetHistoryToken='NewTaskPlace:newTask'>New Task</g:Hyperlink>
사용법
host HTML page 에 아래 부분 추가<iframe src="javascript:''"
id="__gwt_historyFrame"
style="position:absolute;width:0;height:0;border:0"></iframe>
ValueChangeHandler 를 implement 한 object 를 하나 만들고,
ValueChangeEvnet.getValue() 로 token 을 가져와서 parse 를 하고, 이렇게 얻어온 state 와 관련된 화면을 보여주도록 한다.
아래 예제를 참고하자.
댓글 없음:
댓글 쓰기