PlaceHistoryMapper 사용법
PlaceHistoryMapper 는 token 을 가지고 해당하는 place 를 가져오기 위해 Tokenizer 를 사용한다.
place 를 정의할 때 아래처럼 Tokenizer 를 함께 정의 해 준다.
public class CustomPlace extends MyPlace {
public CustomPlace(PlaceToken token) {
this.token = token;
}
public static class Tokenizer implements PlaceTokenizer<CustomPlace> {
@Override
public String getToken(CustomPlace place) {
return place.getToken();
}
@Override
public CustomPlace getPlace(String token) {
return new CustomPlace(new PlaceToken(token));
}
}
}
이런 Tokenizer 들을 사용하는 PlaceHistoryMapper 를 아래처럼 정의해 주고.
// AppPlaceHistoryMapper.java
@WithTokenizers( {OverviewPlace.Tokenizer.class, ProductOverviewPlace.Tokenizer.class,
DomainOverviewPlace.Tokenizer.class})
public interface AppPlaceHistoryMapper extends PlaceHistoryMapper {
}
app 을 시작하는 부분에서 만들어주면 된다.
public void onModuleLoad() {
...
AppPlaceHistoryMapper historyMapper= GWT.create(AppPlaceHistoryMapper.class);
Flow
//
// PlaceHistoryHandler
PlaceHistoryHandler.handleHistoryToken(token)
Place newPlace = null;
if ("".equals(token)) {
newPlace = defaultPlace;
}
if (newPlace == null) {
newPlace = mapper.getPlace(token);
}
if (newPlace == null) {
log().warning("Unrecognized history token: " + token);
newPlace = defaultPlace;
}
placeController.goTo(newPlace);
//
// AbstractPlaceHistoryMapper
AbstractPlaceHistoryMapper.getPlace(token)
...
if (colonAt >= 0) {
initial = token.substring(0, colonAt);
...
PlaceTokenizer<?> tokenizer = getTokenizer(initial);
if (tokenizer != null) {
return tokenizer.getPlace(rest);
}
return null
//
// CustomPlace
CustomPlace.Tokenizer.getPlace()
댓글 없음:
댓글 쓰기