GWT использование токенов в реальном мире - PullRequest
2 голосов
/ 12 мая 2011

Похоже, что при использовании GWT Activity & Places токен всегда требуется.Мой вопрос заключается в том, какой маркер вы бы предоставили для страницы, которая обычно не имеет дополнительных аргументов, таких как страница с контактной информацией или место.В настоящее время это выглядит как / # ContactUsPlace: токен с добавленным случайным токеном.

Как другие разработчики используют токены.

Большое спасибо, Алекс

1 Ответ

1 голос
/ 15 мая 2011

Ну, вы можете вернуть пустой токен, который изменит URL на / # ContactUsPlace: Также вы можете изменить префикс, используя аннотацию @Prefix, чтобы получить ex./ # contactus:

Если вы хотите больше контроля, тогда вы можете реализовать свой собственный PlaceHistoryMapper, вот простой пример:

public class KatPlaceHistoryMapper implements PlaceHistoryMapper{
    private static final String CONTACT = "contact";
    private static final String ABOUT_US = "aboutUs";

    @Override
    public Place getPlace(String hash) {
        if(token == null)
            return new DefaultPlace();
        else if(token.equals(CONTACT))
            return new ContactPlace();
        else if(token.equals(ABOUT_US))
            return new AboutUsPlace();
        else
            return null;
    }

    @Override
    public String getToken(Place place) {
        if(place instanceof DefaultPlace)
            return ""
        else if(place instanceof ContactPlace)
            return CONTACT;
        else if(place instanceof AboutUsPlace)
            return ABOUT_US;
        else
            return null;
    }
}

Токены, возвращенные / полученные вышеупомянутыми методами, на самом деле являются целым хеш-кодом.строки (не только часть после ':').На самом деле вы избавляетесь от токенов при использовании этого подхода.Написание собственного генератора, который будет генерировать этот класс во время компиляции, кажется хорошим выбором.Также не используйте PlaceHistoryMapperWithFactory, он дает вам то же, что вы получаете с PlaceTokenizer.

некоторые документы: http://code.google.com/webtoolkit/doc/latest/DevGuideMvpActivitiesAndPlaces.html#PlaceHistoryMapper

...