/ / @ProxyCodeSplit jak to dokładnie działa? - gwt, gwtp, dzielenie kodu

@ProxyCodeSplit, jak dokładnie działa? - gwt, gwtp, dzielenie kodów

Jestem nowy w GWT i GWTP. Wiem, co to jest podział kodu GWT i podział kodu GWTP Proxy. Mam już czerwony:

http://www.gwtproject.org/doc/latest/DevGuideCodeSplitting.html http://dev.arcbees.com/gwtp/core/presenters/creating-places.html

Zakładałem, że to rozumiem. Więc lubię używać:

Mam aplikację z Administration panel, do którego tylko część użytkowników może uzyskać dostęp. Więc nie ma potrzeby pobierania Administration panel powiązany kod dla wszystkich. Więc w Administration Presenter Dodałem @ProxyCodeSplit jak obserwuj:

public class AdminAreaPresenter extends Presenter<AdminAreaPresenter.MyView, AdminAreaPresenter.MyProxy> {
@ProxyCodeSplit
@NameToken(Routing.Url.admin)
@UseGatekeeper(IsAdminGatekeeper.class)
public interface MyProxy extends TabContentProxyPlace<AdminAreaPresenter> {}

@TabInfo(container = AppPresenter.class)
static TabData getTabLabel(IsAdminGatekeeper adminGatekeeper) {
return new MenuEntryGatekeeper(Routing.Label.admin, 1, adminGatekeeper);
}

public interface MyView extends View {}

AppPresenter appPresenter;

@Inject
AdminAreaPresenter(EventBus eventBus, MyView view, MyProxy proxy, AppPresenter appPresenter) {
super(eventBus, view, proxy, AppPresenter.SLOT_TAB_CONTENT);
this.appPresenter = appPresenter;
}
}

W innych Prezenterach mam @ProxyStandard zamiast @ProxyCodeSplit.

Uruchomiłem aplikację i zaloguj się. Następnie otworzyłem Network tab w konsoli programisty chrome:

wprowadź opis obrazu tutaj

I po otwarciu Administation Panel w aplikacji: wprowadź opis obrazu tutaj

Jak widać, do aplikacji nie dodano żadnych nowych zasobów.

Mój główny prezenter aplikacji AppPresenter implementuje interfejsy AsyncCallStartHandler, AsyncCallFailHandler, AsyncCallSucceedHandler od: com.gwtplatform.mvp.client.proxy. i zastępuję te metody:

@ProxyEvent
@Override
public void onAsyncCallStart(AsyncCallStartEvent event) {
Window.alert("Async start");
getView().setTopMessage("Loading...");
}
@ProxyEvent
@Override
public void onAsyncCallFail(AsyncCallFailEvent event) {
Window.alert("Async fail");
getView().setTopMessage("Oops, something went wrong...");
}
@ProxyEvent
@Override
public void onAsyncCallSucceed(AsyncCallSucceedEvent event) {
Window.alert("Async success");
getView().setTopMessage(null);
}

A kiedy wejdę AdmininArea Przechodzę do allerts: „Asynchroniczny start”, „Asynchroniczny sukces”. Myślę więc, że wszystko działa, ale niestety nie widzę żadnych zmian w zasobach. Proszę o pomoc. Czy robię coś złego czy co?

Odpowiedzi:

1 dla odpowiedzi № 1

Podział kodu jest wyłączony w SuperDevMode ponieważ nie jest kompatybilny z kompilatorem przyrostowym i spowalnia kompilację (zobacz to kwestia).

Aby przetestować dzielenie kodu, skompiluj swój GWT podanie (mvn clean install gwt:compile) i przetestuj go w trybie produkcyjnym (pobierz plik wojenny z katalogu docelowego i umieść go np .: w katalogu serwerów Tomcat: webapps).