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()
댓글 없음:
댓글 쓰기